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)

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