存储在数据库中的当前日期和日期之间的差异无效

问题描述 投票:3回答:2

我有一个表,其中包含一个名为timestamp的列,它以秒为单位存储记录的创建日期时间(使用strtotime()从Date()转换datetime值)。我需要获取创建日期大于72小时的记录,以便删除这些记录。

我的表有以下列:

userid(int)
timestamp(storing created dates in seconds)eg:'1427886372'

我使用了以下查询

SELECT DATEDIFF(HOUR,timestamp,'current date in seconds')>72 FROM table_name.

它不起作用。我还想知道,如果有任何选项可以将GETDATE()的结果转换为sql中的秒,就像php中的strtotime()一样,因为我使用php Date()获取当前日期并使用strtotime()将其转换为秒。

**编辑:**根据kba的回答,我修改了这样的查询。

SELECT * FROM PRTL_UsrHashKeys where 
DATEDIFF(HOUR,timestamp, DATEDIFF(second, '1970-01-01', GETDATE()))>72

但它显示An expression of non-boolean type specified in a context where a condition is expected, near ')'.

php sql-server datetime
2个回答
3
投票

您可以通过简单语句将GETDATE()的输出转换为unix时间戳:

SELECT GETDATE(), DATEDIFF(second, '1970-01-01', GETDATE())

您可以使用其他时间戳源检查结果(例如某些PHP函数)。反过来有点困难。

UNIX_TIMESTAMP in SQL Server

How can I convert bigint (UNIX timestamp) to datetime in SQL Server?

为什么在SQL Server中使用unix时间戳?它没有这方面的支持。功能DATEDIFF,DATEADD等仅适用于实际日期,而不适用于unix时间戳秒。


0
投票

我只想指出unix时间戳与时区无关。 getdate使用服务器时区。

请改用getutcdate

DATEDIFF(SECOND,'1970-01-01', getutcdate())

© www.soinside.com 2019 - 2024. All rights reserved.