J'ai une colonne dans une base de données MySQL qui contient une date en millisecondes (Epoch). Je veux créer une requête SQL qui formate la date comme quelque chose de lisible par l'homme (jour, mois, année, heures, minutes, secondes dans n'importe quel format et fuseau horaire). Existe-t-il une fonction SQL (ou spécifique à MySQL) pour ce faire?
Essayez d'utiliser le FROM_UNIXTIME
fonction comme celle donnée dans le manuel
SELECT FROM_UNIXTIME (1196440219); -> '2007-11-30 10:30:19'
Vous pouvez également utiliser un formatage comme celui-ci
mysql> SELECT FROM_UNIXTIME (UNIX_TIMESTAMP (), -> '% Y% D% M% h:% i:% s% x'); -> '2007 30 novembre 10:30:59 2007 '
Si vous voulez obtenir la microseconde d'un champ, utilisez% f,
select FROM_UNIXTIME(DATE_COLUMN/1000,'%Y-%M-%d %H:%i:%s %f') from TABLE_NAME;
+-------------------------------------------------------+
| FROM_UNIXTIME(CREATETIME/1000,'%Y-%M-%d %H:%i:%s %f') |
+-------------------------------------------------------+
| 2016-March-18 16:02:54 342000 |
+-------------------------------------------------------+
Source: MYSQL DATE_FORMAT
CREATE DEFINER=`root`@`localhost` FUNCTION `ConvertTimeDelta`(duration int) RETURNS
varchar(20) CHARSET utf8mb4
DETERMINISTIC
BEGIN
DECLARE time_delta VARCHAR(20);
DECLARE date_format VARCHAR(20);
SET date_format = IF (duration > 3599999, '%H:%i:%s', '%i:%s');
SET time_delta = TIME_FORMAT(SEC_TO_TIME(duration/1000), date_format);
RETURN time_delta;
END
Par exemple, sélectionnez ConvertTimeDelta (4800240) résultat = 01:20:00 sélectionnez ConvertTimeDelta (35076) résultat = 00:35