Cloud Spanner SQL 支持以下 TIMESTAMP
函数。
注意:如果发生溢出,这些函数会返回运行时错误;结果值受到所定义的日期和时间戳最小值/最大值限制。
CURRENT_TIMESTAMP
CURRENT_TIMESTAMP()
说明
英文括号是可选项。此函数处理闰秒的方式,是将闰秒均匀分布于其前后共 20 个小时的时段中。CURRENT_TIMESTAMP()
生成连续、非模糊的 TIMESTAMP 值,每分钟刚好 60 秒,并且在闰秒时不会重复该值。
支持的输入类型
不适用
结果数据类型
TIMESTAMP
示例
SELECT CURRENT_TIMESTAMP() as now;
+--------------------------------+
| now |
+--------------------------------+
| 2020-06-02T23:58:40.347847393Z |
+--------------------------------+
EXTRACT
EXTRACT(part FROM timestamp_expression [AT TIME ZONE timezone])
说明
返回与提供的 timestamp_expression
中指定的 part
相对应的值。此函数支持 timezone
可选参数。如需了解如何指定时区,请参阅时区定义。
允许的 part
值包括:
NANOSECOND
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAYOFWEEK
DAY
DAYOFYEAR
WEEK
:返回日期属于一年中的第几周,范围为 [0, 53]。一周从星期日开始,一年第一个星期日之前的日期属于第 0 周。ISOWEEK
:以 ISO 8601 格式返回datetime_expression
属于一年之中的第几周。ISOWEEK
从星期一开始算起。返回值的范围为 [1, 53]。每个 ISO 格式年份的第一个ISOWEEK
从公历年第一个星期四之前的星期一开始算起。MONTH
QUARTER
YEAR
ISOYEAR
:以 ISO 8601 格式返回周编号年份,即包含date_expression
所属周的星期四的公历年)。DATE
返回的值会截掉低位时间段。例如,提取秒数时,EXTRACT
会截掉毫秒值和微秒值。
返回数据类型
INT64,但以下情况除外:
part
为DATE
,则返回DATE
对象。
示例
在以下示例中,EXTRACT
返回了 DAY
时间部分对应的值。
WITH Input AS (SELECT TIMESTAMP("2008-12-25 05:30:00+00") AS timestamp_value)
SELECT
EXTRACT(DAY FROM timestamp_value AT TIME ZONE "UTC") AS the_day_utc,
EXTRACT(DAY FROM timestamp_value AT TIME ZONE "America/Los_Angeles") AS the_day_california
FROM Input
+-------------+--------------------+
| the_day_utc | the_day_california |
+-------------+--------------------+
| 25 | 24 |
+-------------+--------------------+
在以下示例中,EXTRACT
返回了与时间戳的一列中不同的时间部分相对应的值。
WITH Timestamps AS (
SELECT TIMESTAMP("2005-01-03 12:34:56+00") AS timestamp_value UNION ALL
SELECT TIMESTAMP("2007-12-31 12:00:00+00") UNION ALL
SELECT TIMESTAMP("2009-01-01 12:00:00+00") UNION ALL
SELECT TIMESTAMP("2009-12-31 12:00:00+00") UNION ALL
SELECT TIMESTAMP("2017-01-02 12:00:00+00") UNION ALL
SELECT TIMESTAMP("2017-05-26 12:00:00+00")
)
SELECT
timestamp_value,
EXTRACT(ISOYEAR FROM timestamp_value) AS isoyear,
EXTRACT(ISOWEEK FROM timestamp_value) AS isoweek,
EXTRACT(YEAR FROM timestamp_value) AS year,
EXTRACT(WEEK FROM timestamp_value) AS week
FROM Timestamps
ORDER BY timestamp_value;
-- Results may differ, depending upon the environment and time zone where this query was executed.
+------------------------+---------+---------+------+------+
| timestamp_value | isoyear | isoweek | year | week |
+------------------------+---------+---------+------+------+
| 2005-01-03T12:34:56Z | 2005 | 1 | 2005 | 1 |
| 2007-12-31T12:00:00Z | 2008 | 1 | 2007 | 52 |
| 2009-01-01T12:00:00Z | 2009 | 1 | 2009 | 0 |
| 2009-12-31T12:00:00Z | 2009 | 53 | 2009 | 52 |
| 2017-01-02T12:00:00Z | 2017 | 1 | 2017 | 1 |
| 2017-05-26T12:00:00Z | 2017 | 21 | 2017 | 21 |
+------------------------+---------+---------+------+------+
STRING
STRING(timestamp_expression[, timezone])
说明
将 timestamp_expression
转换为 STRING 数据类型。支持使用可选参数来指定时区。如需了解如何指定时区,请参阅时区定义。
返回数据类型
STRING
示例
SELECT STRING(TIMESTAMP "2008-12-25 15:30:00+00", "UTC") AS string;
+-------------------------------+
| string |
+-------------------------------+
| 2008-12-25 15:30:00+00 |
+-------------------------------+
TIMESTAMP
TIMESTAMP(string_expression[, timezone])
TIMESTAMP(date_expression[, timezone])
说明
string_expression[, timezone]
:将 STRING 表达式转换为 TIMESTAMP 数据类型。string_expression
必须包含一个时间戳字面量。如果string_expression
在时间戳字面量中包含时区,请勿明确包含timezone
参数。date_expression[, timezone]
:将 DATE 对象转换为 TIMESTAMP 数据类型。
此函数支持使用可选参数来指定时区。如果未指定时区,则使用默认时区 America/Los_Angeles。
返回数据类型
TIMESTAMP
示例
SELECT TIMESTAMP("2008-12-25 15:30:00+00") AS timestamp_str;
-- Results may differ, depending upon the environment and time zone where this query was executed.
+----------------------+
| timestamp_str |
+----------------------+
| 2008-12-25T15:30:00Z |
+----------------------+
SELECT TIMESTAMP("2008-12-25 15:30:00", "America/Los_Angeles") AS timestamp_str;
-- Results may differ, depending upon the environment and time zone where this query was executed.
+----------------------+
| timestamp_str |
+----------------------+
| 2008-12-25T23:30:00Z |
+----------------------+
SELECT TIMESTAMP("2008-12-25 15:30:00 UTC") AS timestamp_str;
-- Results may differ, depending upon the environment and time zone where this query was executed.
+----------------------+
| timestamp_str |
+----------------------+
| 2008-12-25T15:30:00Z |
+----------------------+
SELECT TIMESTAMP(DATE "2008-12-25") AS timestamp_date;
-- Results may differ, depending upon the environment and time zone where this query was executed.
+----------------------+
| timestamp_date |
+----------------------+
| 2008-12-25T08:00:00Z |
+----------------------+
TIMESTAMP_ADD
TIMESTAMP_ADD(timestamp_expression, INTERVAL int64_expression date_part)
说明
向时间戳中添加 int64_expression
单位的 date_part
,与时区无关。
TIMESTAMP_ADD
支持以下 date_part
值:
NANOSECOND
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
。等于 60MINUTE
。DAY
。等于 24HOUR
。
返回数据类型
TIMESTAMP
示例
SELECT
TIMESTAMP("2008-12-25 15:30:00+00") AS original,
TIMESTAMP_ADD(TIMESTAMP "2008-12-25 15:30:00+00", INTERVAL 10 MINUTE) AS later;
-- Results may differ, depending upon the environment and time zone where this query was executed.
+------------------------+------------------------+
| original | later |
+------------------------+------------------------+
| 2008-12-25T15:30:00Z | 2008-12-25T15:40:00Z |
+------------------------+------------------------+
TIMESTAMP_SUB
TIMESTAMP_SUB(timestamp_expression, INTERVAL int64_expression date_part)
说明
从时间戳中减去 int64_expression
个单位的 date_part
,与时区无关。
TIMESTAMP_SUB
支持以下 date_part
值:
NANOSECOND
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
。等于 60MINUTE
。DAY
。等于 24HOUR
。
返回数据类型
TIMESTAMP
示例
SELECT
TIMESTAMP("2008-12-25 15:30:00+00") AS original,
TIMESTAMP_SUB(TIMESTAMP "2008-12-25 15:30:00+00", INTERVAL 10 MINUTE) AS earlier;
-- Results may differ, depending upon the environment and time zone where this query was executed.
+------------------------+------------------------+
| original | earlier |
+------------------------+------------------------+
| 2008-12-25T15:30:00Z | 2008-12-25T15:20:00Z |
+------------------------+------------------------+
TIMESTAMP_DIFF
TIMESTAMP_DIFF(timestamp_expression_a, timestamp_expression_b, date_part)
说明
返回两个 TIMESTAMP
对象 (timestamp_expression_a
- timestamp_expression_b
) 之间完整指定的 date_part
间隔数。如果第一个 TIMESTAMP
早于第二个,那么输出为负数。如果计算结果超过结果类型的最大值(例如两个 TIMESTAMP
对象之间的纳秒数之差超过一个 INT64
最大值),则会引发一个错误。
TIMESTAMP_DIFF
支持以下 date_part
值:
NANOSECOND
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
。等于 60MINUTE
。DAY
。等于 24HOUR
。
返回数据类型
INT64
示例
SELECT
TIMESTAMP("2010-07-07 10:20:00+00") AS later_timestamp,
TIMESTAMP("2008-12-25 15:30:00+00") AS earlier_timestamp,
TIMESTAMP_DIFF(TIMESTAMP "2010-07-07 10:20:00+00", TIMESTAMP "2008-12-25 15:30:00+00", HOUR) AS hours;
-- Results may differ, depending upon the environment and time zone where this query was executed.
+------------------------+------------------------+-------+
| later_timestamp | earlier_timestamp | hours |
+------------------------+------------------------+-------+
| 2010-07-07T10:20:00Z | 2008-12-25T15:30:00Z | 13410 |
+------------------------+------------------------+-------+
在以下示例中,第一个时间戳出现在第二个时间戳之前,从而产生负输出。
SELECT TIMESTAMP_DIFF(TIMESTAMP "2018-08-14", TIMESTAMP "2018-10-14", DAY);
+---------------+
| negative_diff |
+---------------+
| -61 |
+---------------+
在本示例中,结果为 0,因为仅包含整个指定的 HOUR
间隔数。
SELECT TIMESTAMP_DIFF("2001-02-01 01:00:00", "2001-02-01 00:00:01", HOUR)
+---------------+
| negative_diff |
+---------------+
| 0 |
+---------------+
TIMESTAMP_TRUNC
TIMESTAMP_TRUNC(timestamp_expression, date_part[, timezone])
说明
将时间戳截断为 date_part
的粒度。
TIMESTAMP_TRUNC
支持以下 date_part
值:
NANOSECOND
MICROSECOND
MILLISECOND
SECOND
MINUTE
HOUR
DAY
WEEK
ISOWEEK
:将timestamp_expression
截断至上一个 ISO 8601 格式周的边界值。ISOWEEK
从星期一开始算起。每个 ISO 格式年份的第一个ISOWEEK
都包含对应公历年的第一个星期四。任何早于此日期的date_expression
均会截断至上一个星期一。MONTH
QUARTER
YEAR
ISOYEAR
:将timestamp_expression
截断至上一个 ISO 8601 格式周编号年份的边界值。ISO 格式年份的边界值是星期四属于相应公历年的第一周的星期一。
TIMESTAMP_TRUNC
函数支持可选的 timezone
参数。此参数适用于以下 date_parts
:
MINUTE
HOUR
DAY
WEEK
ISOWEEK
MONTH
QUARTER
YEAR
ISOYEAR
如果您想要在截断操作过程中使用默认时区 America/Los_Angeles 以外的时区,请使用此参数。
将 TIMESTAMP
截断到 MINUTE
或 HOUR
时,TIMESTAMP_TRUNC
会确定 TIMESTAMP
在指定(或默认)时区中的民用时间,并且从该 TIMESTAMP
中减去分钟和秒(截断到 HOUR 时)或减去秒(截断到 MINUTE 时)。虽然这在大多数情况下都可以提供直观的结果,但在临近夏令时转换时,小时并不一致,因此结果会不太直观。
返回数据类型
TIMESTAMP
示例
SELECT
TIMESTAMP_TRUNC(TIMESTAMP "2008-12-25 15:30:00+00", DAY, "UTC") AS utc,
TIMESTAMP_TRUNC(TIMESTAMP "2008-12-25 15:30:00+00", DAY, "America/Los_Angeles") AS la;
-- Results may differ, depending upon the environment and time zone where this query was executed.
+------------------------+------------------------+
| utc | la |
+------------------------+------------------------+
| 2008-12-25T00:00:00Z | 2008-12-25T08:00:00Z |
+------------------------+------------------------+
在以下示例中,原始的 timestamp_expression
属于公历 2015 年。但对日期部分 ISOYEAR
执行 TIMESTAMP_TRUNC
会将 timestamp_expression
截断到 ISO 格式年份的开端,而非公历年的开端。公历年 2015 年的第一个星期四是 2015-01-01,因此 ISO 格式年份 2015 年开始于上一个星期一,也就是 2014-12-29。因此,ISO 格式的 timestamp_expression
2015-06-15 00:00:00+00 的上一个年份边界值是 2014-12-29。
SELECT
TIMESTAMP_TRUNC("2015-06-15 00:00:00+00", ISOYEAR) AS isoyear_boundary,
EXTRACT(ISOYEAR FROM TIMESTAMP "2015-06-15 00:00:00+00") AS isoyear_number;
-- Results may differ, depending upon the environment and time zone where this query was executed.
+------------------------+----------------+
| parsed | isoyear_number |
+------------------------+----------------+
| 2014-12-29T08:00:00Z | 2015 |
+------------------------+----------------+
FORMAT_TIMESTAMP
FORMAT_TIMESTAMP(format_string, timestamp[, timezone])
说明
根据指定的 format_string
设置时间戳格式。
如需查看此函数支持的格式元素列表,请参阅 TIMESTAMP 支持的格式元素。
返回数据类型
STRING
示例
SELECT FORMAT_TIMESTAMP("%c", TIMESTAMP "2008-12-25 15:30:00+00", "UTC") AS formatted;
+--------------------------+
| formatted |
+--------------------------+
| Thu Dec 25 15:30:00 2008 |
+--------------------------+
SELECT FORMAT_TIMESTAMP("%b-%d-%Y", TIMESTAMP "2008-12-25 15:30:00+00") AS formatted;
+-------------+
| formatted |
+-------------+
| Dec-25-2008 |
+-------------+
SELECT FORMAT_TIMESTAMP("%b %Y", TIMESTAMP "2008-12-25 15:30:00+00")
AS formatted;
+-------------+
| formatted |
+-------------+
| Dec 2008 |
+-------------+
PARSE_TIMESTAMP
PARSE_TIMESTAMP(format_string, timestamp_string[, timezone])
说明
将时间戳的字符串表示法转换为 TIMESTAMP
对象。
format_string
包含用于定义 timestamp_string
格式的格式元素。timestamp_string
中的每个元素都必须在 format_string
中有对应的元素。format_string
中每个元素的位置必须与 timestamp_string
中每个元素的位置一致。
-- This works because elements on both sides match.
SELECT PARSE_TIMESTAMP("%a %b %e %I:%M:%S %Y", "Thu Dec 25 07:30:00 2008")
-- This doesn't work because the year element is in different locations.
SELECT PARSE_TIMESTAMP("%a %b %e %Y %I:%M:%S", "Thu Dec 25 07:30:00 2008")
-- This doesn't work because one of the year elements is missing.
SELECT PARSE_TIMESTAMP("%a %b %e %I:%M:%S", "Thu Dec 25 07:30:00 2008")
-- This works because %c can find all matching elements in timestamp_string.
SELECT PARSE_TIMESTAMP("%c", "Thu Dec 25 07:30:00 2008")
格式字符串完全支持大多数格式元素,但 %a
、%A
、%g
、%G
、%j
、%P
、%u
、%U
、%V
、%w
、%W
除外。
使用 PARSE_TIMESTAMP
时,请注意以下几点:
- 未指定的字段。任何未指定的字段在初始化时均以
1970-01-01 00:00:00.0
为准。此初始化值使用函数的时区参数(如果存在)所指定的时区。如果未指定,则初始化值使用默认时区 America/Los_Angeles。例如,如果未指定年份,则默认为1970
,依此类推。 - 名称不区分大小写。
Monday
、February
等名称不区分大小写。 - 空格。格式字符串中的一个或更多连续空格与时间戳字符串中的零个或更多连续空格相匹配。此外,始终可在时间戳字符串中使用前导空格和尾随空格(即使这些空格不在格式字符串中)。
- 格式优先顺序。如果两个(或更多)格式元素的信息出现重叠(例如
%F
和%Y
均对年份有影响),则最后一个元素通常会替换前面的所有元素,但也存在一些例外情况(请参阅%s
、%C
和%y
的说明)。
返回数据类型
TIMESTAMP
示例
SELECT PARSE_TIMESTAMP("%c", "Thu Dec 25 07:30:00 2008") AS parsed;
-- Results may differ, depending upon the environment and time zone where this query was executed.
+------------------------+
| parsed |
+------------------------+
| 2008-12-25T15:30:00Z |
+------------------------+
TIMESTAMP_SECONDS
TIMESTAMP_SECONDS(int64_expression)
说明
将 int64_expression
解释为自 1970-01-01 00:00:00 UTC 后的秒数。
返回数据类型
TIMESTAMP
示例
SELECT TIMESTAMP_SECONDS(1230219000) AS timestamp_value;
-- Results may differ, depending upon the environment and time zone where this query was executed.
+------------------------+
| timestamp_value |
+------------------------+
| 2008-12-25T15:30:00Z |
+------------------------+
TIMESTAMP_MILLIS
TIMESTAMP_MILLIS(int64_expression)
说明
将 int64_expression
解释为从 1970-01-01 00:00:00 UTC 开始计算的毫秒数。
返回数据类型
TIMESTAMP
示例
SELECT TIMESTAMP_MILLIS(1230219000000) AS timestamp_value;
-- Results may differ, depending upon the environment and time zone where this query was executed.
+------------------------+
| timestamp_value |
+------------------------+
| 2008-12-25T15:30:00Z |
+------------------------+
TIMESTAMP_MICROS
TIMESTAMP_MICROS(int64_expression)
说明
将 int64_expression
解释从 1970-01-01 00:00:00 UTC 开始计算的微秒数。
返回数据类型
TIMESTAMP
示例
SELECT TIMESTAMP_MICROS(1230219000000000) AS timestamp_value;
-- Results may differ, depending upon the environment and time zone where this query was executed.
+------------------------+
| timestamp_value |
+------------------------+
| 2008-12-25T15:30:00Z |
+------------------------+
UNIX_SECONDS
UNIX_SECONDS(timestamp_expression)
说明
返回从 1970-01-01 00:00:00 UTC 开始计算的秒数。截断更高级别的精度。
返回数据类型
INT64
示例
SELECT UNIX_SECONDS(TIMESTAMP "2008-12-25 15:30:00+00") AS seconds;
+------------+
| seconds |
+------------+
| 1230219000 |
+------------+
UNIX_MILLIS
UNIX_MILLIS(timestamp_expression)
说明
返回从 1970-01-01 00:00:00 UTC 开始计算的毫秒数。截断更高级别的精度。
返回数据类型
INT64
示例
SELECT UNIX_MILLIS(TIMESTAMP "2008-12-25 15:30:00+00") AS millis;
+---------------+
| millis |
+---------------+
| 1230219000000 |
+---------------+
UNIX_MICROS
UNIX_MICROS(timestamp_expression)
说明
返回从 1970-01-01 00:00:00 UTC 开始计算的微秒数。截断更高级别的精度。
返回数据类型
INT64
示例
SELECT UNIX_MICROS(TIMESTAMP "2008-12-25 15:30:00+00") AS micros;
+------------------+
| micros |
+------------------+
| 1230219000000000 |
+------------------+
PENDING_COMMIT_TIMESTAMP
PENDING_COMMIT_TIMESTAMP()
说明
在 DML INSERT
或 UPDATE
语句中使用 PENDING_COMMIT_TIMESTAMP()
函数将待处理的提交时间戳(即写入提交时的提交时间戳)写入一个类型为 TIMESTAMP
的列。
Cloud Spanner SQL 会在事务提交时选择提交时间戳。PENDING_COMMIT_TIMESTAMP
函数只能用作正确分配了类型的列的 INSERT 或 UPDATE 值。该函数不能用于 SELECT,也不能用作任何其他标量表达式的输入。
返回数据类型
TIMESTAMP
示例
以下 DML 语句使用提交时间戳更新 Singers 表中的 LastUpdated
列。
UPDATE Performances SET LastUpdated = PENDING_COMMIT_TIMESTAMP()
WHERE SingerId=1 AND VenueId=2 AND EventDate="2015-10-21"
TIMESTAMP 支持的格式元素
除非另有说明,否则使用格式字符串的 TIMESTAMP 函数均支持以下元素:
格式元素 | 说明 |
%A | 星期几的全名。 |
%a | 星期几的缩写名称。 |
%B | 月份的全名。 |
%b 或 %h | 月份的缩写名称。 |
%C | 用十进制数 (00-99) 表示的世纪(年份除以 100 并截断为整数)。 |
%c | 日期和时间表示格式为 %a %b %e %T %Y。 |
%D | 采用 %m/%d/%y 格式的日期。 |
%d | 用十进制数 (01-31) 表示的月份中的某一天。 |
%e | 用十进制数 (1-31) 表示的月份中的某一天;个位数前面附加一个空格。 |
%F | 采用 %Y-%m-%d 格式的日期。 |
%G | 用十进制数表示的带有世纪信息的 ISO 8601 格式年份。每个 ISO 格式年份开始于公历年的第一个星期四之前的星期一。 请注意,%G 和 %Y 可能会在公历年的边界值附近产生不同的结果,其中公历年和 ISO 格式年份可能会有所不同。 |
%g | 用十进制数 (00-99) 表示的不带世纪信息的 ISO 8601 格式年份。每个 ISO 格式年份开始于公历年的第一个星期四之前的星期一。请注意,%G 和 %Y 可能会在公历年边界值附近产生不同的结果,其中公历年和 ISO 格式年份可能会有所不同。 |
%H | 用十进制数 (00-23) 表示的小时数(24 小时制)。 |
%I | 用十进制数 (01-12) 表示的小时数(12 小时制)。 |
%j | 用十进制数 (001-366) 表示的一年中的某一天。 |
%k | 用十进制数 (0-23) 表示的小时数(24 小时制);个位数前面附加一个空格。 |
%l | 用十进制数 (1-12) 表示的小时数(12 小时制);个位数前面附加一个空格。 |
%M | 用十进制数 (00-59) 表示的分钟数。 |
%m | 用十进制数 (01-12) 表示的月份。 |
%n | 换行符。 |
%P | am 或 pm。 |
%p | AM 或 PM。 |
%R | 采用 %H:%M 格式表示的时间。 |
%r | 使用 AM/PM 标记法表示的 12 小时制的时间。 |
%S | 用十进制数 (00-60) 表示的秒数。 |
%s | 从 1970-01-01 00:00:00 UTC 开始计算的秒数。无论 %s 出现在字符串的哪个位置,始终替换所有其他格式元素。如果出现多个 %s 元素,则以最后一个元素为准。 |
%T | 采用 %H:%M:%S 格式表示的时间。 |
%t | 制表符。 |
%U | 用十进制数 (00-53) 表示的一年中的周数(星期日算作一周的第一天)。 |
%u | 用十进制数 (1-7) 表示的星期名称(星期一算作一周的第一天)。 |
%V | 用十进制数 (01-53) 表示的一年中的 ISO 8601 格式周数(星期一算作一周的第一天)。如果包含 1 月 1 日的那一周有 4 天或超过 4 天属于新的一年,则该周为第 1 周;否则为上一年的第 53 周,而下一周为新年的第 1 周。 |
%W | 用十进制数 (00-53) 表示的一年的周数(星期一算作一周的第一天)。 |
%w | 用十进制数 (0-6) 表示的星期名称(星期日算作一周的第一天)。 |
%X | 采用 HH:MM:SS 格式表示的时间。 |
%x | 采用 MM/DD/YY 格式表示的日期。 |
%Y | 用十进制数表示的四位数的年份。 |
%y | 用十进制数 (00-99) 表示的不带世纪信息的年份(可选用前导零)。可与 %C 混合使用。如果未指定 %C,则 00-68 年属于 2000 年代,而 69-99 年属于 1900 年代。 |
%Z | 时区名称。 |
%z | 根据情况采用 +HHMM 或 -HHMM 格式表示与本初子午线的偏移量,其中正值表示格林威治东区。 |
%% | 单个 % 字符。 |
%Ez | 与 RFC 3339 兼容的数字时区(+HH:MM 或 -HH:MM)。 |
%E#S | 具有 # 位小数精度的秒数。 |
%E*S | 具有完整小数精度的秒数(字面量“*”)。 |
%E4Y | 四个字符的年份 (0001 ... 9999)。注意:%Y 将生成尽量多的字符数以完整显示年份。 |
时区定义
某些日期和时间戳函数可用于替换默认时区并指定其他时区。您可以通过提供时区名称(例如:America/Los_Angeles
)或相对于世界协调时间 (UTC) 的时区偏离值(例如:-08)来指定时区。
如果您选择使用时区偏离值,请使用以下格式:
(+|-)H[H][:M[M]]
以下时间戳是等效的,因为对于指定日期和时间,America/Los_Angeles
的时区偏离值为 -08
。
SELECT UNIX_MILLIS(TIMESTAMP "2008-12-25 15:30:00 America/Los_Angeles") as millis;
SELECT UNIX_MILLIS(TIMESTAMP "2008-12-25 15:30:00-08:00") as millis;