SQL:在从 GMT 到太平洋的查询中偏移时间戳

Posted

技术标签:

【中文标题】SQL:在从 GMT 到太平洋的查询中偏移时间戳【英文标题】:SQL: Offsetting timestamp in a query from GMT to Pacific 【发布时间】:2011-07-29 14:11:47 【问题描述】:

我希望有人可以帮助 SQL 新手(请注意,我很年轻,所以请温柔一点)。我正试图帮助对我公司的一些承包商员工进行审计,看看他们是否可能在他们报告的时间表上浪费时间。他们远程工作,所以我们看不到他们来来去去。我正在运行的是一个查询,以查看他们条目中的第一个和最后一个时间戳,然后按天汇总它们,这样我就可以了解他们在给定日期工作的小时数。所以我正在运行的查询看起来像这样:

SELECT MIN(entry_time) AS first_time_stamp, MAX(entry_time) AS last_time_stamp, employee
FROM some_database.some_table
WHERE employee = 'Kevin' AND entry_time > '20110301'
GROUP BY DATE_FORMAT(entry_time, '%Y%m%d'), employee
;

这会返回一些类似于以下示例的数据。

'2011-03-01 01:10:58', '2011-03-01 17:53:43', 'Kevin'
'2011-03-02 12:00:47', '2011-03-02 20:36:59', 'Kevin'
'2011-03-03 01:34:58', '2011-03-03 21:37:22', 'Kevin'

到目前为止一切顺利,只是您会注意到“Kevin”似乎工作了很长时间。问题是时间戳是格林威治标准时间,我们在美国西海岸。例如,显示的第一个时间戳实际上应该是 2 月 28 日,并且可能是他当天的最后一个条目。

过去一天,我一直在谷歌上搜索如何在这些时间戳被选中之前将它们偏移 -08:00,但总是出现空白或混淆(通常两者兼而有之)。那里的任何人都知道我如何能够抵消entry_time 以便它根据偏移时间返回值?

请注意,我真的不需要担心标准时间和夏令时,因为我只是在寻找相对的工作时间。

谢谢!

【问题讨论】:

【参考方案1】:

函数http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_convert-tz 转换时区之间的时间戳,应该做你需要的。 (我假设您使用的是 MySQL。)

【讨论】:

以上是关于SQL:在从 GMT 到太平洋的查询中偏移时间戳的主要内容,如果未能解决你的问题,请参考以下文章

需要在 oracle 中将任何时区转换为 GMT 时区

在 PHP 中显示 GMT 偏移量

获取带有时区偏移的日期

用于 GMT 偏移的 php 日期和时间工具

如何实现“tzinfo”以将当前 GMT 偏移到 EST(GMT -4:00)?

以毫秒为单位偏移当前系统时间到时区 GMT