Mysql日期比较中的异常结果

时间:2017-09-18 09:16:53

标签: mysql date

我的表中有datetime数据类型,

 `DateAdded` datetime(4) DEFAULT NULL,

我的数据库中有一个DateAdded = 2017-09-11 17:02:48.6531值的记录,(它的ID = 16452994)。

当我想通过以下查询获得它时返回NULL

select `ID`,`DateAdded` from `Add` where   `DateAdded` <= FROM_UNIXTIME(('1505071799' +86400 ), '%Y-%m-%d %h:%i:%s') and ID =16452994 ;

仅供参考:FROM_UNIXTIME(&#39; 1505071799&#39; +86400),&#39;%Y-%m-%d%h:%i:%s&#39;)= 2017-09-11 23:59:59

2017-09-11 17:02:48.6531&lt; = 2017-09-11 23:59:59返回 false

,这很奇怪

但是当我尝试以下查询时,我会得到我想要的结果。

select `ID`,`DateAdded` from `Add` where   `DateAdded` <= FROM_UNIXTIME(('1505071799' +86400 +1 ), '%Y-%m-%d %h:%i:%s') and ID =1645299; 

我想知道为什么会这样,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

  

FROM_UNIXTIME(unix_timestamp),FROM_UNIXTIME(unix_timestamp,format)

     

将unix_timestamp参数的表示形式返回为&#39; YYYY-MM-DD HH:MM:SS&#39;或YYYYMMDDHHMMSS.uuuuuu格式,具体取决于函数是在字符串还是数字上下文中使用。 该值以当前时区表示。 unix_timestamp是一个内部时间戳值,例如UNIX_TIMESTAMP()函数生成的值。

     

如果给出格式,则结果将根据格式字符串进行格式化,格式字符串的使用方式与DATE_FORMAT()函数的条目中列出的方式相同。

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_from-unixtime