web-dev-qa-db-fra.com

MySQL sélectionne la date formatée dans le champ en millisecondes

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?

22
Jason C

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 '
41
woofmeow

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

11
AbD_Riz
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

0
hardika