我有以下 SQL 代码,它执行以下操作:
- 显然会查看日期时间字段(每 5 分钟存储一次)
对上述日期时间字段进行平均并舍入为小时。结果如下所示:
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/