рüф*_*ффп 10 mysql datetime timestamp group-by type-conversion
我有一个查询,它采用上次更新日期(时间戳,但作为bigint(20)列),如下所示:
SELECT a.id_workorder, MAX(b.update_date) AS udpate_date
FROM main_log a,
(
SELECT MAX(log_date) AS update_date, log_id
FROM log_a
GROUP BY log_id
UNION
SELECT MAX(log_date) AS update_date, log_id
FROM log_b
GROUP BY log_id
)b
WHERE a.id_log = b.log_id
GROUP BY b.log_id
Run Code Online (Sandbox Code Playgroud)
并且它返回任何类型的日志(a或b)的最后更新日期(unix时间戳作为bigint(20)):
id last update
-------------------------
1001 1376750476349
1002 1376753690861
1003 1378122801986
1004 1377764414858
1005 1377847226096
...
Run Code Online (Sandbox Code Playgroud)
现在我想格式化日期格式的返回,我天真地虽然我可以FROM_UNIXTIME像这样格式化外部时间戳:
SELECT
a.id_workorder,
FROM_UNIXTIME(MAX(b.update_date)) AS udpate_date
FROM main_log a,
(
SELECT MAX(log_date) AS update_date, log_id
FROM log_a
GROUP BY log_id
UNION
SELECT MAX(log_date) AS update_date, log_id
FROM log_b
GROUP BY log_id
)b
WHERE a.id_log = b.log_id
GROUP BY b.log_id
Run Code Online (Sandbox Code Playgroud)
但它给了
id last update
-------------------------
1001 null
1002 null
1003 null
1004 null
1005 null
...
Run Code Online (Sandbox Code Playgroud)
我试图将转换放在内部查询中,但它是相同的.
我也尝试在SO,mySQL文档和谷歌上找到答案但是没有找到为什么转换在我制作时不起作用group by.
Mod*_*Joe 21
您的时间戳以毫秒为单位尝试:
SELECT a.id_workorder,
FROM_UNIXTIME(MAX(b.update_date/1000)) AS udpate_date
FROM main_log a, ...
Run Code Online (Sandbox Code Playgroud)
(即将时间除以1000得秒)
mysql> select FROM_UNIXTIME(1376750476349);
+------------------------------+
| FROM_UNIXTIME(1376750476349) |
+------------------------------+
| NULL |
+------------------------------+
1 row in set (0.06 sec)
mysql> select FROM_UNIXTIME(1376750476349/1000);
+-----------------------------------+
| FROM_UNIXTIME(1376750476349/1000) |
+-----------------------------------+
| 2013-08-17 15:41:16 |
+-----------------------------------+
1 row in set (0.02 sec)
mysql>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33424 次 |
| 最近记录: |