PolarDB提供了很多函數,用于返回與當前日期和時間相關的值。
所有這些函數的返回值都是基于當前事務的開始時間。
- CURRENT_DATE
- CURRENT_TIMESTAMP
- LOCALTIMESTAMP
- LOCALTIMESTAMP(precision)
CURRENT_DATE返回的是基于當前事務起始時間的當前日期和時間。如果在一個事務中同時調用多個時間,那么CURRENT_DATE值將不會發生改變。
SELECT CURRENT_DATE FROM DUAL;
date
-----------
06-AUG-07
CURRENT_TIMESTAMP返回的是當前日期和時間。當從一個SQL語句中調用時,它將返回SQL語句中每次出現的相同值。如果在一個事務中同時調用多個語句,那么可能返回每次出現的不同值。如果在函數中調用語句,那么它可能返回不同的值,而不是在調用中由當前時間截返回的單一值。
SELECT CURRENT_TIMESTAMP, CURRENT_TIMESTAMP FROM DUAL;
current_timestamp | current_timestamp
----------------------------------+----------------------------------
02-SEP-13 17:52:29.261473 +05:00 | 02-SEP-13 17:52:29.261474 +05:00
可以選擇性地給予LOCALTIMESTAMP一個精確參數,且這個精確參數可以使結果四舍五入到秒字段的小數。如果不指定精確參數,那么結果為可得到的完整精度。
SELECT LOCALTIMESTAMP FROM DUAL;
timestamp
------------------------
06-AUG-07 16:11:35.973
(1 row)
SELECT LOCALTIMESTAMP(2) FROM DUAL;
timestamp
-----------------------
06-AUG-07 16:11:44.58
(1 row)
這些函數返回當前事務的開始時間,但是它們的值在事務運行期間不改變。這是一個值得考慮的特性:它的目的是允許單個事務有一致的當前時間,所以在同一事務中進行多個修改操作使用相同時間戳。其他數據庫系統可以更頻繁的使用這些值。