在 SQL 編輯器 中輸入查詢或 創建計算時,將使用 Presto SQL 語法。若要調整或執行日期或時間戳值的計算,您可能會發現這些常用函數很有用。
注意:鏈中的運行時變數,例如用於 日期和時間轉換的變數, 使用 Python strftime 而不是 Presto SQL。
在時區
若要轉換 時間戳的時區 ,請使用 At 時區
運算符。例如:
選擇投射(時間戳“2020-10-31 01:00 UTC”作為 VARCHAR) 2020-10-31 01:00:00.000 UTC 選擇投射(時間戳“2020-10-31 01:00 UTC”,時區“美國/Los_Angeles”為 VARCHAR) 2020-10-30 18:00:00.000 美國/Los_Angeles 提示:在大多數地區,您可以使用美國/Los_Angeles
表示太平洋時區,將美洲/丹佛表示山區時區,將美洲/芝加哥表示中部時區,將美洲/New_York
用於東部時區。
將美洲/New_York
用於東部時區。
CURRENT_DATE
若要返回查詢運行的日期,請使用 CURRENT_DATE
函數。例如,選擇 CURRENT_DATE()。
日期
若要將值轉換為日期值,請使用 DATE 函數作為 DATE
(值)。
DATE_ADD
若要將間隔單位值添加到日期或時間戳,請使用 DATE_ADD
函數作為 DATE_ADD(單位、值、時間戳)。對於 單元, DATE_ADD
支援:
毫秒
第二
分鐘
小時
日
周
月
季度
年
例如, SELECT DATE_ADD('day', 10, “2020-06-15”)
傳回 2020-06-25。
注意:要將IS08601格式的字串解析為日期值,請使用 FROM_ISO8601_DATE
函數,例如 FROM_ISO8601_DATE('2020-06-15'
)。
DATE_DIFF
若要返回兩個日期或時間戳值的差值,請使用 DATE_DIFF
函數作為 DATE_DIFF(單位、 時間戳 1、 時間戳 2)。對於單位,DATE_DIFF
支援與DATE_ADD相同的值。例如,
SELECT DATE_DIFF('day', “2020-06-15”, “2020-06-25”)
傳回 10。
請注意, DATE_DIFF
僅適用於 Date 物件,您可能需要強制轉換其他物件才能使此函數正常工作。
注意:要將IS08601格式的字串解析為日期值,請使用 FROM_ISO8601_DATE
函數,例如 FROM_ISO8601_DATE('2020-06-15'
)。
DATE_FORMAT
若要以設置的格式返回日期或時間戳值, 請使用 DATE_FORMAT
函數作為 DATE_FORMAT(時間戳, 格式)。對於 格式, DATE_FORMAT
支援以下值的組合:
格式 | 說明 |
---|---|
%a |
星期幾的縮寫名稱,從太陽 到 星期六 |
%b |
縮寫月份名稱,從 1月 到 12月 |
%c |
數位月份值,從 1 到 12 |
%d |
以兩位數表示的月份數位日期,從 01 到 31 |
%e |
數位日期,從 1 到 31 |
%f |
毫秒,列印時999999999 從
000000 到 999000 ;分析 |
%H |
24 小時制的兩位數,從 00 到 23 |
%h 或 %I |
12 小時制的小時製為兩位數,從 00 到 12 |
%i |
分鐘,從 00 到 59 |
%j |
以三位數位表示的一年中的某一天,從 000 到 366 |
%k |
24 小時制,從 0 到 23 |
%l |
12 小時制,從 0 到 12 |
%M |
月份名稱,從 1月 到 12月 |
%m |
兩位數的數位月份值,從 01 到 12 |
%p |
上午或下午 12 小時制 |
%r |
12 小時制上的時間,如 hh:mm:ss ,後跟 AM 或 PM |
%s 或 %S |
二、從00 到59 |
%T |
24 小時制上的時間,如 hh:mm:ss |
%v |
一年中的一周,從 01 到 53 ,其中星期一是一周的第一天;與 %x 一起使用 |
%W |
星期幾的名稱,從星期日 到 星期六 |
%x |
星期一是一周的第一天的年份;與 %v 一起使用 |
%Y |
年份,作為四位數位 |
%y |
年份,作為兩位數 注意:解析時, |
%% |
文字 % 字元 |
注意:要將星期幾作為數位(從 1 到 7
)返回,請使用 DAY_OF_WEEK
函數。
請使用 DAY_OF_WEEK
日
若要從日期或時間戳 返回月份中的某天(作為 1 到 31 之間的數位),請使用 DAY
函數作為 DAY(date_value)。例如, SELECT DAY(“2020-06-15”)
傳回 15。
DAY_OF_WEEK
若要從日期或時間戳返回星期幾(從 1
表示星期一,7 表示星期日)的數位,請使用 DAY_OF_WEEK
函數作為 DAY_OF_WEEK(date_value)。
EOMONTH
若要從日期或時間戳返回月份最後一天的數位,請使用EOMONTH函數,例如EOMONTH
(date_value、month_number_value)。
FROM_ISO8601_DATE
若要將 ISO8601 格式的字串分析為日期,請使用 FROM_ISO8601_DATE
函數,例如 FROM_ISO8601_DATE(date_value)。
間隔
若要添加或減去日期或時間戳的間隔單位值,請使用帶有 + 或
值 單位。對於單位,- 運算子的
INTERVALINTERVAL 函數,例如 +
/-INTERVAL
支援與DATE_ADD相同的值。例如:
-
日期 '2020-08-08' + 間隔 '2' 天
返回 2020-08-10。 -
時間戳 '2020-08-08 01:00' + 間隔 '29' 小時
返回 2020-08-09 06:00:00.000。 -
間隔“2”天 + 間隔“3”小時
返回 2 03:00:00.000。 -
時間戳 '2020-10-31 01:00' - 間隔 '1' 個月
返回 2020-09-30 01:00:00.000。
月
若要從日期或時間戳返回月份(作為 1 到 12 之間的數位),請使用 MONTH
函數作為 MONTH(date_value)。例如, 選擇月份(“2020-06-15”)
返回 6。
眼下排班|目前相關資訊
若要在查詢運行時返回時間戳, 請使用NOW
函數。例如,選擇 NOW()。
季度
若要從日期或時間戳返回一年中的季度( 作為 1 到 4 之間的數位),請使用 QUARTER 函數作為 QUARTER
(date_value)。例如, 選擇季度(“2020-06-15”)
傳回 2。
年
若要從日期或時間戳 返回年份(作為 1000 到 9990 之間的數位),請使用 YEAR
函數作為 YEAR(date_value)。例如, SELECT YEAR(“2020-06-15”)
傳回 2020。