本記事では具体的な例を通して、クエリで時間関数を使用する方法について紹介します。
時間関数
MySQLのテナントでよく使用される日付時刻型には、DATE、TIMESTAMP、TIME、DATETIME、YEARなどがあります。OceanBaseデータベースのMySQLモードでは、一般的に使用される時間関数にはNOW()、CURDATE()、CURTIME()などがあります。
例
日付時刻型の表示形式の調整
OceanBaseデータベースのMySQLモードでは、NOW() を使用して現在の時間を出力でき、DATE_FORMAT 関数を使用して日付時刻型の表示形式を調整できます。
obclient> SELECT NOW(),DATE_FORMAT(NOW(),"%Y/%M/%D %T") new_time;
+---------------------+-------------------------+
| NOW() | new_time |
+---------------------+-------------------------+
| 2022-03-08 18:26:31 | 2022/March/8th 18:26:31 |
+---------------------+-------------------------+
1 row in set
時間から年、月、日、時、分、秒の抽出
OceanBaseデータベースのMySQLモードでは、EXTRACT() 関数を使用して、時間から年、月、日、時、分、秒の情報を抽出できます。
obclient> SET @dt = NOW();
Query OK, 0 rows affected
obclient> SELECT @dt
, EXTRACT(YEAR FROM @dt) d_year
, EXTRACT(MONTH FROM @dt) d_month
, EXTRACT(week FROM @dt) d_week
, EXTRACT(DAY FROM @dt) d_day
, EXTRACT(HOUR FROM @dt) d_hour
, EXTRACT(MINUTE FROM @dt) d_min
, EXTRACT(SECOND FROM @dt) d_second
, EXTRACT(year_month FROM @dt) d_year_month
, EXTRACT(hour_minute FROM @dt) d_hour_min
\G
*************************** 1. row ***************************
@dt: 2022-03-08 18:28:53
d_year: 2022
d_month: 3
d_week: 10
d_day: 8
d_hour: 18
d_min: 28
d_second: 53
d_year_month: 202203
d_hour_min: 1828
1 row in set
日付時刻型の加減算
OceanBaseデータベースのMySQLモードでは、DATE_ADD() または DATE_SUB() 関数を使用して時間の加減算を実行できます。SQLステートメントの例は以下のとおりです:
obclient> SET @dt = NOW();
Query OK, 0 rows affected
obclient> SELECT @dt
, DATE_ADD(@dt, INTERVAL 1 DAY ) t1
, DATE_ADD(@dt, INTERVAL 1 HOUR ) t2
, DATE_ADD(@dt, INTERVAL -10 MINUTE ) t3
, DATE_ADD(@dt, INTERVAL -1 MONTH ) t4
, DATE_ADD(@dt, INTERVAL 1 YEAR ) t5
\G
*************************** 1. row ***************************
@dt: 2022-03-08 18:28:53
t1: 2022-03-09 18:28:53
t2: 2022-03-08 19:28:53
t3: 2022-03-08 18:18:53
t4: 2022-02-08 18:28:53
t5: 2023-03-08 18:28:53
1 row in set
その他の日付時刻型の使用法については、『SQL構文(MySQLモード)』 の章を参照してください。