为什么MySQL中的以下查询会导致该时间戳()为null?
SELECT EndDate, /* EndDate is YEAR(4) datatype with value 2013 */
year('2015-01-01') a,
timestampdiff( YEAR, Year('2015-01-01'), EndDate) b
FROM table结果:
EndDate a b
2013 2015 NULL发布于 2016-05-26 20:47:14
MySQL不会自动将年份(4)数据类型转换为日期时间。我通过在EndDate中添加一个月/日来修正它,它将它视为一个日期时间。
SELECT EndDate, timestampdiff(YEAR, STR_TO_DATE('2015-01-01','%Y-%m-%d'), CONCAT(EndDate,'-01-01')) d FROM table
感谢@Uueerdo发现了这个问题。
发布于 2016-05-25 20:04:02
timestampdiff()需要第二个和第三个参数的有效日期。YEAR('2015-01-01')返回2015,这不是一个有效的日期,它破坏了timestampdiff(),导致返回NULL。只需将第二个参数设置为'2015-01-01',只要您的EndDate是好的,它就会起作用。
发布于 2016-05-25 20:02:33
尝试将年份a stingr转换为有效日期。
SELECT EndDate, /* EndDate is YEAR(4) datatype with value 2013 */
STR_TO_DATE('2015-01-01','%Y-%m-%d') a,
timestampdiff( YEAR, STR_TO_DATE('2015-01-01','%Y-%m-%d'), EndDate) b
FROM tablehttps://stackoverflow.com/questions/37446423
复制相似问题