web-dev-qa-db-ja.com

MySQLはミリ秒フィールドからフォーマットされた日付を選択します

MySQLデータベースにミリ秒(エポック)として日付を含む列があります。日付を人間が読める形式(日、月、年、時間、分、秒を任意の形式とタイムゾーンで)にフォーマットするSQLクエリを作成します。これを行うためのSQL(またはMySQL固有の)関数はありますか?

22
Jason C

manual で指定されているFROM_UNIXTIME関数を使用してみてください

 SELECT FROM_UNIXTIME(1196440219); 
-> '2007-11-30 10:30:19' 

このようなフォーマットを使用することもできます

 mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP()、
-> '%Y%D%M%h:%i:%s%x'); 
-> '2007 11月30日10:30:59 2007 '
41
woofmeow

フィールドからマイクロ秒を取得するには、%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                         |
+-------------------------------------------------------+

ソース: 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

たとえば、ConvertTimeDelta(4800240)result = 01:20:00を選択し、ConvertTimeDelta(35076)result = 00:35を選択します

0
hardika