在Google Spanner中,当我发现此问题时,我正在尝试投放一些时间戳。
执行以下脚本时:
SELECT EXTRACT(DATE FROM CAST("2019-01-01T07:56:34Z" AS TIMESTAMP))
我得到的输出为2018-12-31
,而不是2019-01-01
。
我应该如何解析到确切的日期?
答案 0 :(得分:4)
我建议显式指定时区,例如使用函数。否则,America / Los_Angeles是默认时区,相对于您提供的时间戳时区,它会偏移-8小时。您提供的时间戳文字将Z(祖鲁时间)指定为时区偏移。
# Default timezone.
select DATE(TIMESTAMP "2019-01-01T07:56:34Z", "America/Los_Angeles");
+------------+
| |
+------------+
| 2018-12-31 |
+------------+
# GMT aka Zulu time zone for both the timestamp and the date extraction.
select DATE(TIMESTAMP "2019-01-01T07:56:34Z", "+00:00");
+------------+
| |
+------------+
| 2019-01-01 |
+------------+
答案 1 :(得分:1)
具有讽刺意味的是,当我运行它时,我得到了正确的日期。显然这是一个时区问题。
如果您想按原样从字符串中提取日期,请使用子字符串获取日期部分并转换为日期:
$activeSlide.dequeue();
答案 2 :(得分:-1)
您可以尝试如下使用吗:
select CAST('2019-01-01T07:56:34Z' AS date)