首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当前日期与存储在数据库中的日期之间的差异

问当前日期与存储在数据库中的日期之间的差异
EN

Stack Overflow用户
提问于 2015-04-20 10:55:19
回答 2查看 2K关注 0票数 4

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

我的表有以下列:

代码语言:javascript
复制
userid(int)
timestamp(storing created dates in seconds)eg:'1427886372'

我使用了以下查询

代码语言:javascript
复制
SELECT DATEDIFF(HOUR,timestamp,'current date in seconds')>72 FROM table_name.

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

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

代码语言:javascript
复制
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 ')'.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-20 11:13:06

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

代码语言:javascript
复制
SELECT GETDATE(), DATEDIFF(second, '1970-01-01', GETDATE())

您可以使用另一个时间戳源(例如,一些PHP函数)检查结果。相反的情况要难一些。

TIMESTAMP in SQL Server

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

为什么在server中使用unix时间戳?它不支持这一点。函数DATEDIFF、DATEADD等只适用于实际日期,而不是unix时间戳秒。

票数 3
EN

Stack Overflow用户

发布于 2017-12-19 22:24:30

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

使用getutcdate代替。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29745908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档