MySQLデータベースにミリ秒(エポック)として日付を含む列があります。日付を人間が読める形式(日、月、年、時間、分、秒を任意の形式とタイムゾーンで)にフォーマットするSQLクエリを作成します。これを行うためのSQL(またはMySQL固有の)関数はありますか?
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 '
フィールドからマイクロ秒を取得するには、%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
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を選択します