Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将UTC历元转换为本地时间戳,用于SQL查询_Mysql - Fatal编程技术网

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

Mysql 将UTC历元转换为本地时间戳,用于SQL查询,mysql,Mysql,您好,我的SQL表中有以下信息: 从表中选择* id epic bid offer update_time 136449187 CS.D.EURGBP.TODAY.IP 7010.9 7011.9 1447854279749 136449186 CC.D.LCO.USS.IP 4430.1 4433.1 1447854279696 136449185 CS.D.USDJPY.TODAY.

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

表中选择*

id          epic                    bid     offer   update_time
136449187   CS.D.EURGBP.TODAY.IP    7010.9  7011.9  1447854279749
136449186   CC.D.LCO.USS.IP         4430.1  4433.1  1447854279696
136449185   CS.D.USDJPY.TODAY.IP    12344.1 12344.9 1447854279679
136449184   CC.D.RB.USS.IP          12507   12527   1447854279636
136449179   IX.D.DAX.DAILY.IP       10955   10956   1447854279597
136449183   CS.D.COPPER.TODAY.IP    4610.8  4620.8  1447854279593
136449182   CC.D.HO.USS.IP          13969   13989   1447854279561
136449181   CS.D.EURCHF.TODAY.IP    10837.7 10839.7 1447854279559
其中更新时间是UTC历元(整数)

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

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

尝试以下方法:

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 |
+------------+------------------------+---------------------+

我设法想出了一个解决办法

SELECT * FROM `table` 
WHERE update_time > unix_timestamp( convert_TZ( '2015-11-19 08:00:00', '+01:00', '+00:00' ) ) *1000
转换为('2015-11-19 08:00:00'、'+01:00'、'+00:00') -这将字符串格式的给定时间转换为UTC时间戳。我必须使用时间偏移量,因为我的SQL中目前没有安装时区表


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

FROM_UNIXTIME(),TO_UNIXTIME()
?这是一个更好的解决方案,您可以简单地除以1000,从表中选择_UNIXTIME(
update_time
/1000,“%Y-%m-%d”),但它仍然无法回答如何将任何给定时区(在本例中为欧洲)以“YYYY-MM-DD HH-MM-SS”格式给出的时间转换为UTC等效时间,然后进入一个新纪元,以便进行比较