time_slice
time_slice
Description
指定された時間を指定された時間単位の時間間隔の開始または終了に変換します。
この関数はv2.3からサポートされています。v2.5では、指定された時間を時間間隔の終了地点に変換することもサポートされています。
Syntax
DATETIME time_slice(DATETIME dt, INTERVAL N type[, boundary])
Parameters
dt
: 変換する時間、DATETIME型です。INTERVAL N type
: 時間の単位と時間間隔です。例えば、interval 5 second
です。N
は時間間隔の長さで、INT値である必要があります。type
は単位で、YEAR、QUARTER、MONTH、WEEK、DAY、HOUR、MINUTE、SECONDのいずれかです。
boundary
: オプションです。時間間隔の開始(FLOOR
)または終了(CEIL
)を返すかを指定するために使用されます。有効な値はFLOOR、CEILです。このパラメータはv2.5からサポートされています。
Return value
DATETIME型の値を返します。
Usage notes
時間間隔はA.D. 0001-01-01 00:00:00
から開始します。
Examples
以下の例は test_all_type_select
テーブルを基に提供されています。
select * from test_all_type_select order by id_int;
+------------+---------------------+--------+
| id_date | id_datetime | id_int |
+------------+---------------------+--------+
| 2052-12-26 | 1691-12-23 04:01:09 | 0 |
| 2168-08-05 | 2169-12-18 15:44:31 | 1 |
| 1737-02-06 | 1840-11-23 13:09:50 | 2 |
| 2245-10-01 | 1751-03-21 00:19:04 | 3 |
| 1889-10-27 | 1861-09-12 13:28:18 | 4 |
+------------+---------------------+--------+
5 rows in set (0.06 sec)
例1: boundary
パラメータを指定せずに、指定されたDATETIME値を5秒間隔の開始地点に変換します。
select time_slice(id_datetime, interval 5 second)
from test_all_type_select
order by id_int;
+---------------------------------------------------+
| time_slice(id_datetime, INTERVAL 5 second, floor) |
+---------------------------------------------------+
| 1691-12-23 04:01:05 |
| 2169-12-18 15:44:30 |
| 1840-11-23 13:09:50 |
| 1751-03-21 00:19:00 |
| 1861-09-12 13:28:15 |
+---------------------------------------------------+
5 rows in set (0.16 sec)
例2: boundary
パラメータを FLOOR
に設定して、指定されたDATETIME値を5日間隔の開始地点に変換します。
select time_slice(id_datetime, interval 5 day, FLOOR)
from test_all_type_select
order by id_int;
+------------------------------------------------+
| time_slice(id_datetime, INTERVAL 5 day, floor) |
+------------------------------------------------+
| 1691-12-22 00:00:00 |
| 2169-12-16 00:00:00 |
| 1840-11-21 00:00:00 |
| 1751-03-18 00:00:00 |
| 1861-09-12 00:00:00 |
+------------------------------------------------+
5 rows in set (0.15 sec)
例3: 指定されたDATETIME値を5日間隔の終了地点に変換します。
select time_slice(id_datetime, interval 5 day, CEIL)
from test_all_type_select
order by id_int;
+-----------------------------------------------+
| time_slice(id_datetime, INTERVAL 5 day, ceil) |
+-----------------------------------------------+
| 1691-12-27 00:00:00 |
| 2169-12-21 00:00:00 |
| 1840-11-26 00:00:00 |
| 1751-03-23 00:00:00 |
| 1861-09-17 00:00:00 |
+-----------------------------------------------+
5 rows in set (0.12 sec)