Ho una domanda che prende l'ultima data di aggiornamento (timestamp ma come bigint colonna (20)) in questo modo:Convertire BigInt timestamp in una data reale con l'aggregazione e operazioni riga mySQL
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
e restituisce l'ultima data di aggiornamento (unix timestamp come un bigint (20)) per ogni tipo di log (a o B):
id last update
-------------------------
1001 1376750476349
1002 1376753690861
1003 1378122801986
1004 1377764414858
1005 1377847226096
...
Ora voglio formattare il ritorno nel formato della data e io ingenuamente se posso solo formattare il timestamp esterno con FROM_UNIXTIME
in questo modo:
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
ma dà
id last update
-------------------------
1001 null
1002 null
1003 null
1004 null
1005 null
...
Ho provato a mettere la conversione nelle query interne pure ma è lo stesso.
Ho anche provato a trovare risposte su SO, documentazione mySQL e Google ma non ho trovato il motivo per cui la conversione non funziona quando faccio un group by
.
Wow, quanto fosse stupido ... grazie mille per notare il millisecondi (anche io dubito che abbiano davvero bisogno di precisione millisecondo nel loro sistema). Comunque funziona bene dividendo per 1000. –
grazie anche, la seconda volta sono stato sorpreso dai millisecondi ... –