首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么对于这个时间戳()我得到一个NULL?

问为什么对于这个时间戳()我得到一个NULL?
EN

Stack Overflow用户
提问于 2016-05-25 19:52:25
回答 3查看 3.3K关注 0票数 2

为什么MySQL中的以下查询会导致该时间戳()为null?

代码语言:javascript
复制
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

结果:

代码语言:javascript
复制
 EndDate     a     b
    2013  2015  NULL
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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发现了这个问题。

票数 0
EN

Stack Overflow用户

发布于 2016-05-25 20:04:02

timestampdiff()需要第二个和第三个参数的有效日期。YEAR('2015-01-01')返回2015,这不是一个有效的日期,它破坏了timestampdiff(),导致返回NULL。只需将第二个参数设置为'2015-01-01',只要您的EndDate是好的,它就会起作用。

票数 2
EN

Stack Overflow用户

发布于 2016-05-25 20:02:33

尝试将年份a stingr转换为有效日期。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37446423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档