§ Oracle兼容-语法-SYSDATE_IS_NOW模式


§ 1. 语法

SET [GLOBAL|SESSION] sql_mode = SYSDATE_IS_NOW;
1

§ 2. 定义和用法

在启用 sql_mode = SYSDATE_IS_NOW 模式后,函数 SYSDATE()NOW() 将表现一致。

除了修改 sql_mode,还可以增加启动参数 --sysdate_is_now,这么做实现的功能是一致的,但启动参数不能动态修改,而 sql_mode 则可以在线动态修改。

注意:

在 oracle_mode 的情况下,无论sql_mode 中是否含有 SYSDATE_IS_NOW
SYSDATE 的行为都等价与 now(6)

§ 3. 示例

greatsql> SET sql_mode = '';

greatsql> SELECT NOW(), SYSDATE();
+---------------------+---------------------+
| NOW()               | SYSDATE()           |
+---------------------+---------------------+
| 2023-11-14 16:26:42 | 2023-11-14 16:26:42 |
+---------------------+---------------------+

greatsql> SELECT NOW(), SLEEP(1) , SYSDATE();
+---------------------+----------+---------------------+
| NOW()               | SLEEP(1) | SYSDATE()           |
+---------------------+----------+---------------------+
| 2023-11-14 16:26:27 |        0 | 2023-11-14 16:26:28 |
+---------------------+----------+---------------------+
1 row in set (1.00 sec)

greatsql> SET sql_mode = SYSDATE_IS_NOW;

greatsql> SELECT NOW(), SLEEP(1) , SYSDATE();
+---------------------+----------+---------------------+
| NOW()               | SLEEP(1) | SYSDATE()           |
+---------------------+----------+---------------------+
| 2023-11-14 16:27:27 |        0 | 2023-11-14 16:27:27 |
+---------------------+----------+---------------------+
1 row in set (1.00 sec)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

greatsql-wx