您好我的SQL表中有以下信息:
SELECT * FROM {{1}}
{{1}}
其中update_time是UTC纪元(整数)
我如何才能仅提取2015-11-18 08:00:00(欧洲)和2015-11-18 21:30:00(欧洲)之间的行
我不确定如何将本地时间戳转换为MYSQL中的UTC等效值,以便我可以提取相关的行。
答案 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.