MYSQL TIMESTAMPDIFF 函数不工作

MYSQL TIMESTAMPDIFF function is not working

我正在尝试在我的一个查询中使用 TIMESTAMPDIFF 函数,这让我很头疼。

TABLE

id  |  web_address    |  timeperiod  |  timeperiod_exp

1   |  www.google.com |  1564692614  |  1564779014

1564692614 = GMT: Thursday, August 1, 2019 8:50:14 PM

1564779014 = GMT: Friday, August 2, 2019 8:50:14 PM

有什么问题吗?

正如您所见,这两个时间戳之间的差异正好是 1 天,但未返回任何记录。

SELECT * FROM mytable WHERE TIMESTAMPDIFF(DAY, timeperiod, timeperiod_exp) >= 1

FIDDLE在哪里?

https://www.db-fiddle.com/f/udmrC2xdvrEEKGxEF7ty84/7

应该做什么?

请看一下上面的fiddle并建议应该修改什么或其他功能来代替timestampdiff。

好像我看到函数 TIMESTAMPDIFF() 应该采用两个时间戳,但它采用日期而不是整数的直接时间戳因此以下工作:

SELECT * FROM mytable WHERE TIMESTAMPDIFF(DAY, FROM_UNIXTIME(timeperiod), FROM_UNIXTIME(timeperiod_exp)) >= 1

已更新Fiddle

https://www.db-fiddle.com/f/udmrC2xdvrEEKGxEF7ty84/8

查看 TIMESTAMPDIFF()

的文档

TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)

Returns datetime_expr2 − datetime_expr1, where datetime_expr1 and datetime_expr2 are date or datetime expressions. One expression may be a date and the other a datetime

如您所见,它要求参数的类型为 DATE 或 DATETIME。但是您将时间戳存储为整数。

因此要么使用 FROM_UNIXTIME() 将整数时间戳转换为 DATETIME:

SELECT *
FROM mytable
WHERE TIMESTAMPDIFF(DAY, FROM_UNIXTIME(timeperiod), FROM_UNIXTIME(timeperiod_exp)) >= 1

db-fiddle

或者只使用简单的算术(因为我们知道一天有多少秒):

SELECT *
FROM mytable
WHERE (timeperiod_exp - timeperiod) >= 60*60*24

db-fiddle