sql - 从已经严格格式化的 SQL 日期时间字符串中提取日期作为 UNIX 时间戳

标签 sql sql-server t-sql

我有以下 SQL 代码,它执行以下操作:

  1. 显然会查看日期时间字段(每 5 分钟存储一次)
  2. 对上述日期时间字段进行平均并舍入为小时。结果如下所示:

    2012-02-11 16:00:00.000
    2012-02-11 17:00:00.000
    2012-02-11 18:00:00.000
    2012-02-11 19:00:00.000
    

这是代码:

DATEADD(hh, DATEPART(hh, LogDetails.lastupdated), 
DATEADD(d, DATEDIFF(d, 0, LogDetails.lastupdated), 0)) AS TimePeriod

这就像一个魅力,相关的对象平均得很好。我现在需要将此日期戳转换为 UNIX 时间戳(用于绘制图表)。有人可以帮忙吗?无论我做什么似乎都不起作用,所有 UNIX 时间戳都是相同的。

编辑:这终于可以工作了!!

DATEDIFF(second, '1970/01/01 00:00:00', 
DATEADD(hh, DATEPART(hh, LogDetails.lastupdated),
DATEADD(d, DATEDIFF(d, 0, LogDetails.lastupdated), 0))) as UXTIME

最佳答案

工作示例:

DECLARE @gmtOffset AS INT = DATEDIFF(second, GETDATE(), GETUTCDATE()); 
DECLARE @someDates TABLE (d DATETIME);
INSERT INTO @someDates(d) VALUES('2012-02-11 16:00:00.000');
INSERT INTO @someDates(d) VALUES('2012-02-11 17:00:00.000');
INSERT INTO @someDates(d) VALUES('2012-02-11 18:00:00.000');
INSERT INTO @someDates(d) VALUES('2012-02-11 19:00:00.000');

SELECT DATEADD(second, @gmtOffset, d) AS time_in_gmt,
       DATEDIFF(second, '1970/01/01 00:00:00', DATEADD(second, @gmtOffset, d)) AS unix_timestamp
FROM @someDates;

关于sql - 从已经严格格式化的 SQL 日期时间字符串中提取日期作为 UNIX 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9254207/

相关文章:

mysql - 使用 mySQL 中的现有 View 加入 View

html - 是否可以更改 SSRS 中 Web 服务界面的外观?

MySQL 用触发器拦截插入

mysql - 如何回答使用没有连接的多个表的问题?数据库

sql-server - 在 SQL Server 重播跟踪结果中捕获读取、写入和 CPU

sql - 在 SQL 中重新创建移动中位数和移动模式 Excel 公式

sql-server - 即使位于带有 IN 标记的 where 子句中的子查询中存在错误,SQL Server 也会删除记录

sql-server - 如何将扁平化 SQL 表转换为行(大约 UNPIVOTting)

asp.net - 提供第 n 页显示数据的最佳 t-sql?

c# - 尽管最大池大小设置为 1000000,但 Sql 超时异常