我的表中有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;
我想知道为什么会这样,我该如何解决这个问题?
答案 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