UNIX_TIMESTAMP返回0

Bar*_*ğlu 5 mysql

我试图通过使用unix_timestamp函数返回值,但它表现得很奇怪.

set @currentdate:= UNIX_TIMESTAMP(NOW() + 1000) /* 1339947588 */
set @currentdate:= UNIX_TIMESTAMP(NOW() + 2000) /* 1339948188 */
set @currentdate:= UNIX_TIMESTAMP(NOW() + 3000) /* 1339948788 */

set @currentdate:= UNIX_TIMESTAMP(NOW() + 4000) /* 0 */
set @currentdate:= UNIX_TIMESTAMP(NOW() + 5000) /* 0 */
set @currentdate:= UNIX_TIMESTAMP(NOW() + 6000) /* 0 */
set @currentdate:= UNIX_TIMESTAMP(NOW() + 7000) /* 0 */

set @currentdate:= UNIX_TIMESTAMP(NOW() + 8000) /* 1339949388 */
set @currentdate:= UNIX_TIMESTAMP(NOW() + 9000) /* 1339949988 */
set @currentdate:= UNIX_TIMESTAMP(NOW() + 10000) /* 1339950588 */
Run Code Online (Sandbox Code Playgroud)

为什么它为4000-7000之间的值返回值0?

我看到的答案与当前时间有关,因为给出0的间隔随着时间的推移而变化.可能是什么原因?

提前致谢,

Emi*_*röm 3

这一点也不奇怪。NOW()在调用结果之前,您将在结果中添加一些数字UNIX_TIMSETAMP()。 我想你想在添加你的值UNIX_TIMESTAMP 之前打电话:

UNIX_TIMESTAMP(NOW()) + 4000
Run Code Online (Sandbox Code Playgroud)

要不就

UNIX_TIMESTAMP() + 4000
Run Code Online (Sandbox Code Playgroud)

这两者都会使当前时间增加 4000秒。另一个解决方案是使用INTERVAL关键字向日期添加时间单位:

NOW() + INTERVAL 4000 SECOND
Run Code Online (Sandbox Code Playgroud)

根据手册,当NOW() + 4000评估时,NOW()返回一个以下格式的数字:YYYYMMDDHHMMSS.uuuuuu,例如20071215235026.000000。如果你加上 4000,你可能会也可能不会得到类似于真实日期的东西。正如您所看到的,您不会添加 秒或任何其他定义的实体。如果获得正确的日期UNIX_TIMESTAMP将返回时间戳,否则将返回0