为什么我得到这个 timestampdiff() 的 NULL?
Why do I get a NULL for this timestampdiff()?
为什么 MySQL 中的以下查询会导致该 timestampdiff() 为空?
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
尝试将 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 table
timestampdiff()
需要第二个和第三个参数的有效日期。 YEAR('2015-01-01')
returns 2015
,这不是一个有效的日期,它打破了 timestampdiff()
导致它成为 return NULL。只需提出第二个参数 '2015-01-01'
,只要您的 EndDate
是好的,它就应该有效。
MySQL 不会自动将 YEAR(4) 数据类型转换为 DATETIME。我通过将 month/day 附加到 EndDate 来修复它,并将其视为 DATETIME。
SELECT EndDate,
timestampdiff(YEAR, STR_TO_DATE('2015-01-01','%Y-%m-%d'), CONCAT(EndDate,'-01-01')) d
FROM table
感谢@Uueerdo 找出问题。
为什么 MySQL 中的以下查询会导致该 timestampdiff() 为空?
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
尝试将 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 table
timestampdiff()
需要第二个和第三个参数的有效日期。 YEAR('2015-01-01')
returns 2015
,这不是一个有效的日期,它打破了 timestampdiff()
导致它成为 return NULL。只需提出第二个参数 '2015-01-01'
,只要您的 EndDate
是好的,它就应该有效。
MySQL 不会自动将 YEAR(4) 数据类型转换为 DATETIME。我通过将 month/day 附加到 EndDate 来修复它,并将其视为 DATETIME。
SELECT EndDate,
timestampdiff(YEAR, STR_TO_DATE('2015-01-01','%Y-%m-%d'), CONCAT(EndDate,'-01-01')) d
FROM table
感谢@Uueerdo 找出问题。