本記事では、具体的な例を通じてクエリ内で時間関数を使用する方法を説明します。
日付時刻関数
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モード)」 の章を参照してください。