Oracle兼容-语法-SYSDATE_IS_NOW模式


1. 语法

1. SET [GLOBAL|SESSION] sql_mode = SYSDATE_IS_NOW;

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. 示例

1. greatsql> SET sql_mode = '';

3. greatsql> SELECT NOW(), SYSDATE();
4. +---------------------+---------------------+
5. | NOW()               | SYSDATE()           |
6. +---------------------+---------------------+
7. | 2023-11-14 16:26:42 | 2023-11-14 16:26:42 |
8. +---------------------+---------------------+

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

18. greatsql> SET sql_mode = SYSDATE_IS_NOW;

20. greatsql> SELECT NOW(), SLEEP(1) , SYSDATE();
21. +---------------------+----------+---------------------+
22. | NOW()               | SLEEP(1) | SYSDATE()           |
23. +---------------------+----------+---------------------+
24. | 2023-11-14 16:27:27 |        0 | 2023-11-14 16:27:27 |
25. +---------------------+----------+---------------------+
26. 1 row in set (1.00 sec)

问题反馈

联系我们

扫码关注微信公众号

greatsql-wx