

如需與 Amazon Timestream for LiveAnalytics 類似的功能，請考慮使用 Amazon Timestream for InfluxDB。它提供簡化的資料擷取和單一位數毫秒查詢回應時間，以進行即時分析。[在這裡](https://docs.aws.amazon.com//timestream/latest/developerguide/timestream-for-influxdb.html)進一步了解。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 日期/時間函數
<a name="date-time-functions"></a>

**注意**  
LiveAnalytics 的 Timestream 不支援負時間值。任何導致負面時間的操作都會導致錯誤。

LiveAnalytics 的 Timestream 會使用 UTC 時區做為日期和時間。Timestream 支援下列函數的日期和時間。

**Topics**
+ [一般和轉換](#date-time-functions-general)
+ [間隔和持續時間](#date-time-functions-interval-duration)
+ [格式化和剖析](#date-time-functions-formatting-parsing)
+ [擷取](#date-time-functions-extraction)

## 一般和轉換
<a name="date-time-functions-general"></a>

Timestream for LiveAnalytics 支援下列一般和轉換函數的日期和時間。


| 函式 | 輸出資料類型 | Description | 
| --- | --- | --- | 
|  current\$1date  |  date  |  以 UTC 傳回目前日期。未使用括號。 <pre>SELECT current_date</pre> 範例結果： `2022-07-07`  這也是預留關鍵字。如需預留關鍵字的清單，請參閱 [保留的關鍵字](ts-limits.md#limits.reserved)。   | 
|  current\$1time  |  time  |  以 UTC 傳回目前時間。未使用括號。 <pre>SELECT current_time</pre> 範例結果： `17:41:52.827000000`  這也是預留關鍵字。如需預留關鍵字的清單，請參閱 [保留的關鍵字](ts-limits.md#limits.reserved)。   | 
|  current\$1timestamp 或 now()  |  timestamp  |  以 UTC 傳回目前的時間戳記。 <pre>SELECT current_timestamp</pre> 範例結果： `2022-07-07 17:42:32.939000000`  這也是預留關鍵字。如需預留關鍵字的清單，請參閱 [保留的關鍵字](ts-limits.md#limits.reserved)。   | 
|  current\$1timezone()  |  varchar 值將為 'UTC'。  |  Timestream 會使用 UTC 時區做為日期和時間。 <pre>SELECT current_timezone()</pre> 範例結果： `UTC`  | 
|  date(varchar(x))、date（時間戳記）  |  date  |  <pre>SELECT date(TIMESTAMP '2022-07-07 17:44:43.771000000')</pre> 範例結果： `2022-07-07`  | 
|  last\$1day\$1of\$1month（時間戳記）、 last\$1day\$1of\$1month（日期）  |  date  |  <pre>SELECT last_day_of_month(TIMESTAMP '2022-07-07 17:44:43.771000000')</pre> 範例結果： `2022-07-31`  | 
|  from\$1iso8601\$1timestamp（字串）  |  timestamp  |  將 ISO 8601 時間戳記剖析為內部時間戳記格式。 <pre>SELECT from_iso8601_timestamp('2022-06-17T08:04:05.000000000+05:00')</pre> 範例結果： `2022-06-17 03:04:05.000000000`  | 
|  from\$1iso8601\$1date（字串）  |  date  |  將 ISO 8601 日期字串剖析為指定日期 UTC 00：00：00 的內部時間戳記格式。 <pre>SELECT from_iso8601_date('2022-07-17')</pre> 範例結果： `2022-07-17`  | 
|  to\$1iso8601（時間戳記）， to\$1iso8601（日期）  |  varchar  |  傳回輸入的 ISO 8601 格式字串。 <pre>SELECT to_iso8601(from_iso8601_date('2022-06-17'))</pre> 範例結果： `2022-06-17`  | 
|  from\$1milliseconds（聯名）  |  timestamp  |  <pre>SELECT from_milliseconds(1)</pre> 範例結果： `1970-01-01 00:00:00.001000000`  | 
|  from\$1nanoseconds(bigint)  |  timestamp  |  <pre>select from_nanoseconds(300000001)</pre> 範例結果： `1970-01-01 00:00:00.300000001`  | 
|  from\$1unixtime(double)  |  timestamp  |  傳回與提供的 unixtime 對應的時間戳記。 <pre>SELECT from_unixtime(1)</pre> 範例結果： `1970-01-01 00:00:01.000000000`  | 
|  本地時間  |  time  |  以 UTC 傳回目前時間。未使用括號。 <pre>SELECT localtime</pre> 範例結果： `17:58:22.654000000`  這也是預留關鍵字。如需預留關鍵字的清單，請參閱 [保留的關鍵字](ts-limits.md#limits.reserved)。   | 
|  localtimestamp  |  timestamp  |  以 UTC 傳回目前的時間戳記。未使用括號。 <pre>SELECT localtimestamp</pre> 範例結果： `2022-07-07 17:59:04.368000000`  這也是預留關鍵字。如需預留關鍵字的清單，請參閱 [保留的關鍵字](ts-limits.md#limits.reserved)。   | 
|  to\$1milliseconds （間隔日到秒）， to\$1milliseconds （時間戳記）  |  bigint  |  <pre>SELECT to_milliseconds(INTERVAL '2' DAY + INTERVAL '3' HOUR)</pre> 範例結果： `183600000` <pre>SELECT to_milliseconds(TIMESTAMP '2022-06-17 17:44:43.771000000')</pre> 範例結果： `1655487883771`  | 
|  to\$1nanoseconds （間隔日到秒）， to\$1nanoseconds （時間戳記）  |  bigint  |  <pre>SELECT to_nanoseconds(INTERVAL '2' DAY + INTERVAL '3' HOUR)</pre> 範例結果： `183600000000000` <pre>SELECT to_nanoseconds(TIMESTAMP '2022-06-17 17:44:43.771000678')</pre> 範例結果： `1655487883771000678`  | 
|  to\$1unixtime（時間戳記）  |  double  |  傳回所提供時間戳記的 unixtime。 <pre>SELECT to_unixtime('2022-06-17 17:44:43.771000000')</pre> 範例結果： `1.6554878837710001E9`  | 
|  date\$1trunc(unit，時間戳記）  |  timestamp  |  傳回截斷為單位的時間戳記，其中單位為 【秒、分鐘、小時、日、週、月、季或年】 之一。 <pre>SELECT date_trunc('minute', TIMESTAMP '2022-06-17 17:44:43.771000000')</pre> 範例結果： `2022-06-17 17:44:00.000000000`  | 

## 間隔和持續時間
<a name="date-time-functions-interval-duration"></a>

LiveAnalytics 的 Timestream 支援日期和時間的下列間隔和持續時間函數。


| 函式 | 輸出資料類型 | Description | 
| --- | --- | --- | 
|  date\$1add(unit， bigint， date)， date\$1add(unit， bigint， time)， date\$1add(varchar(x)， bigint， timestamp)  |  timestamp  |  新增單位的重音，其中單位是 【秒、分鐘、小時、天、週、月、季度或年】 之一。 <pre>SELECT date_add('hour', 9, TIMESTAMP '2022-06-17 00:00:00')</pre> 範例結果： `2022-06-17 09:00:00.000000000`  | 
|  date\$1diff（單位、日期、日期）、date\$1diff（單位、時間、時間）、date\$1diff（單位、時間戳記、時間戳記）  |  bigint  |  傳回差異，其中單位為 【秒、分鐘、小時、天、週、月、季度或年】 之一。 <pre>SELECT date_diff('day', DATE '2020-03-01', DATE '2020-03-02')</pre> 範例結果： `1`  | 
|  parse\$1duration（字串）  |  間隔  |  剖析輸入字串以傳回`interval`對等。 <pre>SELECT parse_duration('42.8ms')</pre> 範例結果： `0 00:00:00.042800000` <pre>SELECT typeof(parse_duration('42.8ms'))</pre> 範例結果： `interval day to second`  | 
| bin（時間戳記、間隔） | timestamp |  將`timestamp`參數的整數值四捨五入到`interval`參數整數值的最近倍數。 此傳回值的意義可能不明顯。它首先使用整數算術計算，方法是將時間戳記整數除以間隔整數，然後將結果乘以間隔整數。 請記住，時間戳記會將 UTC 時間點指定為自 POSIX epoch (1970 年 1 月 1 日） 以來經過的秒數分數，傳回值很少符合行事曆單位。例如，如果您指定 30 天的間隔，自 epoch 以來的所有天數都會分為 30 天增量，並傳回最近 30 天增量的開始，這與日曆月無關。 以下是一些範例： <pre>bin(TIMESTAMP '2022-06-17 10:15:20', 5m)     ==> 2022-06-17 10:15:00.000000000<br />bin(TIMESTAMP '2022-06-17 10:15:20', 1d)     ==> 2022-06-17 00:00:00.000000000<br />bin(TIMESTAMP '2022-06-17 10:15:20', 10day)  ==> 2022-06-17 00:00:00.000000000<br />bin(TIMESTAMP '2022-06-17 10:15:20', 30day)  ==> 2022-05-28 00:00:00.000000000</pre>  | 
|  ago（間隔）  |  timestamp  |  傳回對應至 current\$1timestamp 的值`interval`。 <pre>SELECT ago(1d)</pre> 範例結果： `2022-07-06 21:08:53.245000000`  | 
|  間隔常值，例如 1h、1d 和 30m  |  間隔  |  間隔常值是 parse\$1duration(string) 的便利性。例如，`1d` 與 `parse_duration('1d')` 相同。這允許在使用間隔的任何地方使用常值。例如，`ago(1d)` 和 `bin(<timestamp>, 1m)`。  | 

有些間隔常值做為 parse\$1duration 的速記。例如，`parse_duration('1day')`、`parse_duration('1d')`、 `1day`和 會傳回`1 00:00:00.000000000`類型為 `1d`的每個 `interval day to second`。允許使用提供給 的格式空間`parse_duration`。例如， `parse_duration('1day')`也會傳回 `00:00:00.000000000`。但`1 day`不是間隔常值。

與 相關的單位`interval day to second`為 ns、nanosecond、us、microsecond、ms、毫秒、s、 second、m、min、h、hour、d 和 day。

也有 `interval year to month`。與間隔年到月相關的單位為 y、年和月。例如， `SELECT 1year`會傳回 `1-0`。 `SELECT 12month`也會傳回 `1-0`。 `SELECT 8month`會傳回 `0-8`。

雖然 的單位也適用於某些函數，例如 `quarter` `date_trunc`和 `date_add`，但 `quarter` 無法做為間隔常值的一部分使用。

## 格式化和剖析
<a name="date-time-functions-formatting-parsing"></a>

適用於 LiveAnalytics 的 Timestream 支援日期和時間的下列格式化和剖析函數。


| 函式 | 輸出資料類型 | Description | 
| --- | --- | --- | 
|  date\$1format（時間戳記，varchar(x))  |  varchar  |  如需此函數所用格式指標的詳細資訊，請參閱 https：//[https://trino.io/docs/current/functions/datetime.html\$1mysql-date-functions](https://trino.io/docs/current/functions/datetime.html#mysql-date-functions) <pre>SELECT date_format(TIMESTAMP '2019-10-20 10:20:20', '%Y-%m-%d %H:%i:%s')</pre> 範例結果： `2019-10-20 10:20:20`  | 
|  date\$1parse(varchar(x)、varchar(y))  |  timestamp  |  如需此函數使用的格式指標的詳細資訊，請參閱 https：//[https://trino.io/docs/current/functions/datetime.html\$1mysql-date-functions](https://trino.io/docs/current/functions/datetime.html#mysql-date-functions) <pre>SELECT date_parse('2019-10-20 10:20:20', '%Y-%m-%d %H:%i:%s')</pre> 範例結果： `2019-10-20 10:20:20.000000000`  | 
|  format\$1datetime(timestamp， varchar(x))  |  varchar  |  如需此函數使用的格式字串的詳細資訊，請參閱 https：//[http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html](http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html) <pre>SELECT format_datetime(parse_datetime('1968-01-13 12', 'yyyy-MM-dd HH'), 'yyyy-MM-dd HH')</pre> 範例結果： `1968-01-13 12`  | 
|  parse\$1datetime(varchar(x)、varchar(y))  |  timestamp  |  如需此函數所用格式字串的詳細資訊，請參閱 https：//[http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html](http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html) <pre>SELECT parse_datetime('2019-12-29 10:10 PST', 'uuuu-LL-dd HH:mm z')</pre> 範例結果： `2019-12-29 18:10:00.000000000`  | 

## 擷取
<a name="date-time-functions-extraction"></a>

適用於 LiveAnalytics 的 Timestream 支援下列擷取函數的日期和時間。擷取函數是其餘便利函數的基礎。


| 函式 | 輸出資料類型 | Description | 
| --- | --- | --- | 
|  擷取  |  bigint  |  從時間戳記擷取欄位，其中欄位是 【YEAR、QUARTER、MONTH、WEEK、DAY、DAY\$1OF\$1MONTH、DAY\$1OF\$1WEEK、DOW、DAY\$1OF\$1YEAR、DOY、YEAR\$1OF\$1WEEK、YOW、HOUR、MINUTE 或 SECOND】 之一。 <pre>SELECT extract(YEAR FROM '2019-10-12 23:10:34.000000000')</pre> 範例結果： `2019`  | 
|  day（時間戳記）、day（日期）、day（間隔日到秒）  |  bigint  |  <pre>SELECT day('2019-10-12 23:10:34.000000000')</pre> 範例結果： `12`  | 
|  day\$1of\$1month（時間戳記）、day\$1of\$1month（日期）、day\$1of\$1month（間隔日到秒）  |  bigint  |  <pre>SELECT day_of_month('2019-10-12 23:10:34.000000000')</pre> 範例結果： `12`  | 
|  day\$1of\$1week（時間戳記）、day\$1of\$1week（日期）  |  bigint  |  <pre>SELECT day_of_week('2019-10-12 23:10:34.000000000')</pre> 範例結果： `6`  | 
|  day\$1of\$1year（時間戳記）、day\$1of\$1year（日期）  |  bigint  |  <pre>SELECT day_of_year('2019-10-12 23:10:34.000000000')</pre> 範例結果： `285`  | 
|  dow(timestamp)、dw(date)  |  bigint  |  day\$1of\$1week 的別名  | 
|  doy（時間戳記）、doy（日期）  |  bigint  |  day\$1of\$1year 的別名  | 
|  hour（時間戳記）、hour（時間）、hour（間隔日到秒）  |  bigint  |  <pre>SELECT hour('2019-10-12 23:10:34.000000000')</pre> 範例結果： `23`  | 
|  毫秒 （時間戳記）、毫秒 （時間）、毫秒 （間隔日到秒）  |  bigint  |  <pre>SELECT millisecond('2019-10-12 23:10:34.000000000')</pre> 範例結果： `0`  | 
|  minute（時間戳記）、 minute（時間）、 minute（間隔日到秒）  |  bigint  |  <pre>SELECT minute('2019-10-12 23:10:34.000000000')</pre> 範例結果： `10`  | 
|  month(timestamp)、month(date)、month(interval year to month)  |  bigint  |  <pre>SELECT month('2019-10-12 23:10:34.000000000')</pre> 範例結果： `10`  | 
|  nanosecond（時間戳記）、nanosecond（時間）、nanosecond（間隔日到秒）  |  bigint  |  <pre>SELECT nanosecond(current_timestamp)</pre> 範例結果： `162000000`  | 
|  quarter（時間戳記）、 quarter（日期）  |  bigint  |  <pre>SELECT quarter('2019-10-12 23:10:34.000000000')</pre> 範例結果： `4`  | 
|  second（時間戳記）、second（時間）、second（間隔日到秒）  |  bigint  |  <pre>SELECT second('2019-10-12 23:10:34.000000000')</pre> 範例結果： `34`  | 
|  week（時間戳記）、week（日期）  |  bigint  |  <pre>SELECT week('2019-10-12 23:10:34.000000000')</pre> 範例結果： `41`  | 
|  week\$1of\$1year（時間戳記）、 week\$1of\$1year（日期）  |  bigint  |  一週的別名  | 
|  year(timestamp)、year(date)、 year(interval year to month)  |  bigint  |  <pre>SELECT year('2019-10-12 23:10:34.000000000')</pre> 範例結果： `2019`  | 
|  year\$1of\$1week（時間戳記）、year\$1of\$1week（日期）  |  bigint  |  <pre>SELECT year_of_week('2019-10-12 23:10:34.000000000')</pre> 範例結果： `2019`  | 
|  yow（時間戳記）、yow（日期）  |  bigint  |  year\$1of\$1week 的別名  | 