mysql时间字段转null_MySQL日期字符串转换成NULL值的异常处理

  • Post author:
  • Post category:mysql


1,YYYYmmdd格式日期转换为null 看如下记录,一个能取到值,一个取不到值** mysqlgt; SELECT DATE_FORMAT(STR_TO_DATE(lsquo;2

1,YYYYmmdd格式日期转换为null

看如下记录,一个能取到值,一个取不到值**

mysql> SELECT DATE_FORMAT(STR_TO_DATE(‘20150922 13:01:01’, ‘%Y%m%d %H:%m:%s’),’%H:%m’);

+————————————————————————–+

| DATE_FORMAT(STR_TO_DATE(‘20150922 13:01:01’, ‘%Y%m%d %H:%m:%s’),’%H:%m’) |

+————————————————————————–+

| 13:01 |

+————————————————————————–+

1 row in set (0.00 sec)

mysql> SELECT DATE_FORMAT(STR_TO_DATE(‘20150922 12:55:00’, ‘%Y%m%d %H:%m:%s’),’%H:%m’);

+————————————————————————–+

| DATE_FORMAT(STR_TO_DATE(‘20150922 12:55:00’, ‘%Y%m%d %H:%m:%s’),’%H:%m’) |

+————————————————————————–+

| NULL |

+————————————————————————–+

1 row in set, 1 warning (0.00 sec)

mysql>

2,查看报错信息:

mysql> show warnings;

+———+——+————————————————————————+

| Level | Code | Message |

+———+——+————————————————————————+

| Warning | 1411 | Incorrect datetime value: ‘20150922 12:55:00’ for function str_to_date |

+———+——+————————————————————————+

1 row in set (0.00 sec)

mysql>

报警说是Incorrect datetime value: ‘20150922 12:55:00’ for function str_to_date,不正确的日期格式,所以换成比较规范的日期格式

3,换成规范的%Y-%m-%d %H:%i:%s试试

mysql> select DATE_FORMAT(str_to_date(‘2015-09-22 13:00:01’, ‘%Y-%m-%d %H:%i:%s’),’%H:%i’);

+——————————————————————————+

| DATE_FORMAT(str_to_date(‘2015-09-22 13:00:01’, ‘%Y-%m-%d %H:%i:%s’),’%H:%i’) |

+——————————————————————————+

| 13:00 |

+——————————————————————————+

1 row in set (0.00 sec)

mysql> select DATE_FORMAT(str_to_date(‘2015-09-22 12:55:00’, ‘%Y-%m-%d %H:%i:%s’),’%H:%i’);

+——————————————————————————+

| DATE_FORMAT(str_to_date(‘2015-09-22 12:55:00’, ‘%Y-%m-%d %H:%i:%s’),’%H:%i’) |

+——————————————————————————+

| 12:55 |

+——————————————————————————+

1 row in set (0.00 sec)

mysql>

看到在规范的格式下,日期从字符串转换到日期格式,然后截取时分都是能取到值的。

参考官网地址:#function_str-to-date

4,再次确定缩小范围,是%h的问题,将时换成大写就搞定了

再看到一个案例,将格式变成2015-09-22 13:00:01表准备格式,可以仍然取不到时分值,如下所示:

mysql> select DATE_FORMAT(str_to_date(‘2015-09-22 13:00:01’, ‘%Y-%m-%d %h:%i:%s’),’%h:%i’);

+——————————————————————————+

| DATE_FORMAT(str_to_date(‘2015-09-22 13:00:01’, ‘%Y-%m-%d %h:%i:%s’),’%h:%i’) |

+——————————————————————————+

| NULL

|

+——————————————————————————+

1 row in set, 1 warning (0.00 sec)

mysql> select DATE_FORMAT(str_to_date(‘2015-09-22 12:55:00’, ‘%Y-%m-%d %h:%i:%s’),’%h:%i’);

+——————————————————————————+

| DATE_FORMAT(str_to_date(‘2015-09-22 12:55:00’, ‘%Y-%m-%d %h:%i:%s’),’%h:%i’) |

+——————————————————————————+

| 12:55

|

+——————————————————————————+

1 row in set (0.00 sec)

mysql>

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!



版权声明:本文为weixin_30467625原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。