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
的文档
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
或者只使用简单的算术(因为我们知道一天有多少秒):
SELECT *
FROM mytable
WHERE (timeperiod_exp - timeperiod) >= 60*60*24
我正在尝试在我的一个查询中使用 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
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
或者只使用简单的算术(因为我们知道一天有多少秒):
SELECT *
FROM mytable
WHERE (timeperiod_exp - timeperiod) >= 60*60*24