本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
日期函數
重要
Amazon S3 Select 不再提供給新客戶。Amazon S3 Select 的現有客戶可以繼續照常使用此功能。進一步了解
Amazon S3 Select 支援下列日期函數。
DATE_ADD
考量到日期部分、數量和時間戳記,DATE_ADD
透過數量更改的日期部分傳回更新的時間戳記。
語法
DATE_ADD(
date_part
,quantity
,timestamp
)
參數
date_part
-
指定哪些日期部分要進行修改。此可為下列其中之一:
-
年
-
月
-
天
-
小時
-
分鐘
-
秒
-
-
quantity
-
此值套用到更新的時間戳記。
正值會新增至時間戳記 date_part,負值則相減。quantity
-
timestamp
-
該函數對其運作的目標時間戳記。
範例
DATE_ADD(year, 5, `2010-01-01T`) -- 2015-01-01 (equivalent to 2015-01-01T) DATE_ADD(month, 1, `2010T`) -- 2010-02T (result will add precision as necessary) DATE_ADD(month, 13, `2010T`) -- 2011-02T DATE_ADD(day, -1, `2017-01-10T`) -- 2017-01-09 (equivalent to 2017-01-09T) DATE_ADD(hour, 1, `2017T`) -- 2017-01-01T01:00-00:00 DATE_ADD(hour, 1, `2017-01-02T03:04Z`) -- 2017-01-02T04:04Z DATE_ADD(minute, 1, `2017-01-02T03:04:05.006Z`) -- 2017-01-02T03:05:05.006Z DATE_ADD(second, 1, `2017-01-02T03:04:05.006Z`) -- 2017-01-02T03:04:06.006Z
DATE_DIFF
考量到日期部分和兩個有效的時間戳記,DATE_DIFF
會傳回日期部分中的差異。當傳回的值是負整數,而
的 date_part
值大於 timestamp1
的 date_part
值。當傳回的值是正整數,而 timestamp2
的 date_part
值少於 timestamp1
的 date_part
值。timestamp2
語法
DATE_DIFF(
date_part
,timestamp1
,timestamp2
)
參數
-
date_part
-
指定哪些時間戳記的部分要進行比較。如需定義的詳細資訊
date_part
,請參閱「DATE_ADD」。 -
timestamp1
-
要比較的第一種時間戳記。
-
timestamp2
-
要比較的第二種時間戳記。
範例
DATE_DIFF(year, `2010-01-01T`, `2011-01-01T`) -- 1 DATE_DIFF(year, `2010T`, `2010-05T`) -- 4 (2010T is equivalent to 2010-01-01T00:00:00.000Z) DATE_DIFF(month, `2010T`, `2011T`) -- 12 DATE_DIFF(month, `2011T`, `2010T`) -- -12 DATE_DIFF(day, `2010-01-01T23:00`, `2010-01-02T01:00`) -- 0 (need to be at least 24h apart to be 1 day apart)
EXTRACT
考量到日期部分和時間戳記,EXTRACT
會傳回時間戳記的日期部分值。
語法
EXTRACT(
date_part
FROMtimestamp
)
參數
-
date_part
-
指定哪些時間戳記的部分要進行擷取。此可為下列其中之一:
-
YEAR
-
MONTH
-
DAY
-
HOUR
-
MINUTE
-
SECOND
-
TIMEZONE_HOUR
-
TIMEZONE_MINUTE
-
-
timestamp
-
該函數對其運作的目標時間戳記。
範例
EXTRACT(YEAR FROM `2010-01-01T`) -- 2010 EXTRACT(MONTH FROM `2010T`) -- 1 (equivalent to 2010-01-01T00:00:00.000Z) EXTRACT(MONTH FROM `2010-10T`) -- 10 EXTRACT(HOUR FROM `2017-01-02T03:04:05+07:08`) -- 3 EXTRACT(MINUTE FROM `2017-01-02T03:04:05+07:08`) -- 4 EXTRACT(TIMEZONE_HOUR FROM `2017-01-02T03:04:05+07:08`) -- 7 EXTRACT(TIMEZONE_MINUTE FROM `2017-01-02T03:04:05+07:08`) -- 8
TO_STRING
考量到時間戳記和格式模式,TO_STRING
會傳回以指定格式的時間戳記字串呈現。
語法
TO_STRING (
timestamp
time_format_pattern
)
參數
-
timestamp
-
該函數對其運作的目標時間戳記。
-
time_format_pattern
-
字串,其中包含下列特殊字元的解釋。
格式
範例
描述
yy
69
2 位數年份
y
1969
4 位數年份
yyyy
1969
填補零之 4 位數年份
M
1
某年某月
MM
01
填補零的某年某月
MMM
Jan
精簡的月年名稱
MMMM
January
完整的月年名稱
MMMMM
J
某年某月的第一個字母 (注意:此格式搭配
TO_TIMESTAMP
函數使用無效。)d
2
某月某日 (1-31)
dd
02
填補零的某月某日 (01-31)
a
AM
一天的早上或下午
h
3
一天的幾時 (1-12)
hh
03
填補零的一天的幾時 (01-12)
H
3
一天的幾時 (0-23)
HH
03
填補零的一天的幾時 (00-23)
m
4
幾分 (0-59)
mm
04
填補零的小時中的分鐘 (00-59)
s
5
幾秒 (0-59)
ss
05
填補零的分鐘中的幾秒 (00-59)
S
0
幾分之幾秒 (精確度:0.1,範圍:0.0-0.9)
SS
6
幾分之幾秒 (精確度:0.01,範圍:0.0-0.99)
SSS
60
幾分之幾秒 (精確度:0.001,範圍:0.0-0.999)
…
…
…
SSSSSSSSS
60000000
幾分之幾秒 (精確度上限:1 奈米秒,範圍:0.0-0.999999999)
n
60000000
奈米秒
X
+07
或Z
如果位移為 0,則在小時或
Z
內位移XX
或XXXX
+0700
或Z
如果位移為 0,則在小時和分鐘或
Z
內位移XXX
或XXXXX
+07:00
或Z
如果位移為 0,則在小時和分鐘或
Z
內位移x
7
在小時內位移
xx
或xxxx
700
在小時和分鐘內位移
xxx
或xxxxx
+07:00
在小時和分鐘內位移
範例
TO_STRING(`1969-07-20T20:18Z`, 'MMMM d, y') -- "July 20, 1969" TO_STRING(`1969-07-20T20:18Z`, 'MMM d, yyyy') -- "Jul 20, 1969" TO_STRING(`1969-07-20T20:18Z`, 'M-d-yy') -- "7-20-69" TO_STRING(`1969-07-20T20:18Z`, 'MM-d-y') -- "07-20-1969" TO_STRING(`1969-07-20T20:18Z`, 'MMMM d, y h:m a') -- "July 20, 1969 8:18 PM" TO_STRING(`1969-07-20T20:18Z`, 'y-MM-dd''T''H:m:ssX') -- "1969-07-20T20:18:00Z" TO_STRING(`1969-07-20T20:18+08:00Z`, 'y-MM-dd''T''H:m:ssX') -- "1969-07-20T20:18:00Z" TO_STRING(`1969-07-20T20:18+08:00`, 'y-MM-dd''T''H:m:ssXXXX') -- "1969-07-20T20:18:00+0800" TO_STRING(`1969-07-20T20:18+08:00`, 'y-MM-dd''T''H:m:ssXXXXX') -- "1969-07-20T20:18:00+08:00"
TO_TIMESTAMP
給定一個字串,TO_TIMESTAMP
將其轉換為時間戳記。TO_TIMESTAMP
是 TO_STRING
的反轉操作。
語法
TO_TIMESTAMP (
string
)
參數
-
string
-
該函數對其運作的目標字串。
範例
TO_TIMESTAMP('2007T') -- `2007T` TO_TIMESTAMP('2007-02-23T12:14:33.079-08:00') -- `2007-02-23T12:14:33.079-08:00`
UTCNOW
UTCNOW
傳回 UTC 目前時間做為時間戳記。
語法
UTCNOW()
參數
UTCNOW
未取得參數。
範例
UTCNOW() -- 2017-10-13T16:02:11.123Z