函数 UNIX_TIMESTAMP 的问题

kar*_*.sr 2 mysql

查询 1

SELECT SessionInfo.IVRSessionInfoID
FROM   SessionInfo
WHERE  SessionCallTime BETWEEN UNIX_TIMESTAMP('2013-08-01 00:00:00') 
                           AND UNIX_TIMESTAMP('2013-08-01 23:59:59')
ORDER  BY SessionInfo.SessionCallTime DESC;
Run Code Online (Sandbox Code Playgroud)

查询 2

SELECT SessionInfo.IVRSessionInfoID
FROM   SessionInfo
WHERE  ( SessionInfo.SessionCallTime BETWEEN '2013-08-01 00:00:00' 
                                         AND '2013-08-01 23:59:59' )
ORDER  BY SessionInfo.SessionCallTime DESC; 
Run Code Online (Sandbox Code Playgroud)

有什么不同?为什么第一个查询给出 0 行而第二个给出记录?

在此表中,这两个日期之间有 20000 行。

小智 5

我猜:

来自:http : //dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_unix-timestamp

UNIX_TIMESTAMP(), UNIX_TIMESTAMP(日期)

如果不带参数调用,则返回 Unix 时间戳(自 '1970-01-01 00:00:00' UTC 以来的秒数)作为无符号整数。如果使用日期参数调用 UNIX_TIMESTAMP(),它将返回参数值作为自 '1970-01-01 00:00:00' UTC 以来的秒数

在第一个查询中,您将日期与秒数 2013-08-01 00:00:00 和 2013-08-01 23:59:00 是在 1970-01-01 之后,这意味着您正在比较你的日期到秒。

在第二个查询中,您实际上是在将日期与其他日期进行比较。