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)這些函數返回當前事務的開始時間,但是它們的值在事務運行期間不改變。這是一個值得考慮的特性:它的目的是允許單個事務有一致的目前時間,所以在同一事務中進行多個修改操作使用相同時間戳記。其他資料庫系統可以更頻繁的使用這些值。