将UTC纪元转换为本地时间戳,用于SQL查询

时间:2015-11-18 16:06:07

标签: mysql

您好我的SQL表中有以下信息:

SELECT * FROM {{1}}

{{1}}

其中update_time是UTC纪元(整数)

我如何才能仅提取2015-11-18 08:00:00(欧洲)和2015-11-18 21:30:00(欧洲)之间的行

我不确定如何将本地时间戳转换为MYSQL中的UTC等效值,以便我可以提取相关的行。

2 个答案:

答案 0 :(得分:0)

试试这个:

select from_unixtime(substr(update_time,1,length(update_time)-3)) from table;

最后3位数是你无法显示的毫秒数

+------------+------------------------+---------------------+
| up_time    | from_unixtime(up_time) | date                |
+------------+------------------------+---------------------+
| 1435870857 | 2015-07-02 17:00:57    | 2015-07-02 17:00:57 |
|  899413267 | 1998-07-02 17:01:07    | 1998-07-02 17:01:07 |
| 1435870867 | 2015-07-02 17:01:07    | 2015-07-02 17:01:07 |
| 1436760000 | 2015-07-13 00:00:00    | 2015-07-13 00:00:00 |
| 1436760000 | 2015-07-13 00:00:00    | 2015-07-13 00:00:00 |
| 1436984796 | 2015-07-15 14:26:36    | 2015-07-15 14:26:36 |
| 1436984977 | 2015-07-15 14:29:37    | 2015-07-15 14:29:37 |
| 1436984993 | 2015-07-15 14:29:53    | 2015-07-15 14:29:53 |
| 1436587200 | 2015-07-11 00:00:00    | 2015-07-11 00:00:00 |
| 1437451200 | 2015-07-21 00:00:00    | 2015-07-21 00:00:00 |
| 1437443325 | 2015-07-20 21:48:45    | 2015-07-20 21:48:45 |
| 1437471045 | 2015-07-21 05:30:45    | 2015-07-21 05:30:45 |
| 1437442185 | 2015-07-20 21:29:45    | 2015-07-20 21:29:45 |
| 1437470985 | 2015-07-21 05:29:45    | 2015-07-21 05:29:45 |
| 1437463845 | 2015-07-21 03:30:45    | 2015-07-21 03:30:45 |
| 1447696656 | 2015-11-16 12:57:36    | 2015-11-16 12:57:36 |
| 1447696628 | 2015-11-16 12:57:08    | 2015-11-16 12:57:08 |
+------------+------------------------+---------------------+

答案 1 :(得分:0)

我设法找到了解决方案!

SELECT * FROM `table` 
WHERE update_time > unix_timestamp( convert_TZ( '2015-11-19 08:00:00', '+01:00', '+00:00' ) ) *1000

convert_TZ(' 2015-11-19 08:00:00',' +01:00',' +00:00')   - 这将字符串格式的给定时间转换为UTC时间戳。我必须使用时间偏移,因为我目前还没有在我的SQL中安装时区表。

Unix_timestampp()然后将UTC时间戳转换为纪元。因为这是几秒钟,我想与我的表中的字段update_time进行比较,以毫秒为单位,然后我将结果乘以1000.