

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

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

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


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

有些間隔常值做為 parse\_duration 的速記。例如，`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\_format(timestamp， varchar(x)) | varchar | 如需此函數所用格式指標的詳細資訊，請參閱 https：//[https://trino.io/docs/current/functions/datetime.html\#mysql-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><br />範例結果： `2019-10-20 10:20:20` | 
| date\_parse(varchar(x)、varchar(y)) | timestamp | 如需此函數所用格式指標的詳細資訊，請參閱 https：//[https://trino.io/docs/current/functions/datetime.html\#mysql-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><br />範例結果： `2019-10-20 10:20:20.000000000` | 
| format\_datetime(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><br />範例結果： `1968-01-13 12` | 
| parse\_datetime(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><br />範例結果： `2019-12-29 18:10:00.000000000` | 

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

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


| 函式 | 輸出資料類型 | Description | 
| --- | --- | --- | 
| 擷取 | bigint | 從時間戳記擷取欄位，其中欄位為 【YEAR、QUARTER、MONTH、WEEK、DAY、DAY\_OF\_MONTH、DAY\_OF\_WEEK、DOW、DAY\_OF\_YEAR、DOY、YEAR\_OF\_WEEK、YOW、HOUR、MINUTE 或 SECOND】 之一。<pre>SELECT extract(YEAR FROM '2019-10-12 23:10:34.000000000')</pre><br />範例結果： `2019` | 
| day（時間戳記）、day（日期）、day（間隔日到秒） | bigint | <pre>SELECT day('2019-10-12 23:10:34.000000000')</pre>範例結果： `12` | 
| day\_of\_month（時間戳記）、day\_of\_month（日期）、day\_of\_month（間隔日到秒） | bigint | <pre>SELECT day_of_month('2019-10-12 23:10:34.000000000')</pre>範例結果： `12` | 
| day\_of\_week（時間戳記）、day\_of\_week（日期） | bigint | <pre>SELECT day_of_week('2019-10-12 23:10:34.000000000')</pre>範例結果： `6` | 
| day\_of\_year（時間戳記）、day\_of\_year（日期） | bigint | <pre>SELECT day_of_year('2019-10-12 23:10:34.000000000')</pre>範例結果： `285` | 
| dow(timestamp)、dw(date) | bigint | day\_of\_week 的別名 | 
| doy（時間戳記）、doy（日期） | bigint | day\_of\_year 的別名 | 
| 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\_of\_year（時間戳記）、 week\_of\_year（日期） | bigint | 一週的別名 | 
| year(timestamp)、year(date)、 year(interval year to month) | bigint | <pre>SELECT year('2019-10-12 23:10:34.000000000')</pre>範例結果： `2019` | 
| year\_of\_week（時間戳記）、 year\_of\_week（日期） | bigint | <pre>SELECT year_of_week('2019-10-12 23:10:34.000000000')</pre>範例結果： `2019` | 
| yow（時間戳記）、yow（日期） | bigint | year\_of\_week 的別名 | 