Php 当前日期和数据库中存储的日期之间的差异不工作

Php 当前日期和数据库中存储的日期之间的差异不工作,php,sql-server,datetime,Php,Sql Server,Datetime,我有一个表,其中包含一个名为timestamp的列,该列以秒为单位存储记录的创建日期时间(使用strotime()从Date()转换日期时间值)。我需要获取创建日期大于72小时的记录,以便删除这些记录 “我的表”有以下列: userid(int) timestamp(storing created dates in seconds)eg:'1427886372' 我使用了以下查询 SELECT DATEDIFF(HOUR,timestamp,'current date in seconds')

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

“我的表”有以下列:

userid(int)
timestamp(storing created dates in seconds)eg:'1427886372'
我使用了以下查询

SELECT DATEDIFF(HOUR,timestamp,'current date in seconds')>72 FROM table_name.
它不起作用。我还想知道,是否有任何选项可以将sql中的
GETDATE()
的结果转换为秒,就像php中的
strotime()
一样,因为我使用php
date()
获取当前日期,并使用
strotime()
将其转换为秒

**编辑:**根据kba的回答,我修改了如下查询

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

但它显示的是在“')附近预期条件的上下文中指定的非布尔型表达式。

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

SELECT GETDATE(), DATEDIFF(second, '1970-01-01', GETDATE())
您可以使用另一个时间戳源(例如一些PHP函数)检查结果。反过来就难了一点


为什么在SQL server中使用unix时间戳?它不支持该功能。功能DATEDIFF、DATEADD等仅适用于实际日期,而不适用于unix时间戳秒。

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

改用
getutcdate


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

1427886372
是以秒为单位创建的日期,从日期开始日期
1900-01-01
?@ughai我在php中使用date()获取日期,并使用strotime()将结果转换为秒。使用
WHERE[时间戳],即时间戳小于72小时,而不是在时间戳列上执行函数。如果还不太晚,如果您使用2008或更高版本,您可能希望考虑切换到 DATETIME> <代码> >或“代码> DATEMEM2”。这将使查询更容易从长远来看,避免所有这些转换。删除当前日期前72小时创建的记录@GarethD@GarethD如果您给出评论作为回答,我将接受您的回答。在我的情况下,我如何使用查询。我使用的是:从PRTL_UsrHashKeys中选择*其中DATEDIFF(小时,时间戳,DATEDIFF(秒,'1970-01-01',GETDATE())>72我修改了我的查询。你能帮助我如何获得结果吗?你不能使用带有unix时间戳的SQL server函数。它不起作用。请尝试以下操作
SELECT*FROM PRTL_UsrHashKeys WHERE DATEDIFF(第二个,'1970-01-01',GETDATE())-timestamp>72*3600
。如果要使用DATEDIFF,请使用一些日期类型而不是整数。