Sql 将时间戳转换为日期时,会产生一个(日期+1)
在谷歌扳手,我试图铸造一些时间戳的日期,当我发现这个问题 执行以下脚本时:Sql 将时间戳转换为日期时,会产生一个(日期+1),sql,date,datetime,google-cloud-platform,google-cloud-spanner,Sql,Date,Datetime,Google Cloud Platform,Google Cloud Spanner,在谷歌扳手,我试图铸造一些时间戳的日期,当我发现这个问题 执行以下脚本时: SELECT EXTRACT(DATE FROM CAST("2019-01-01T07:56:34Z" AS TIMESTAMP)) 我得到的输出是2018-12-31,而不是2019-01-01 我应该如何将其解析为确切的日期?您可以尝试使用以下方法: select CAST('2019-01-01T07:56:34Z' AS date) 您是否可以尝试使用以下方法: select CAST('2019-01-0
SELECT EXTRACT(DATE FROM CAST("2019-01-01T07:56:34Z" AS TIMESTAMP))
我得到的输出是2018-12-31,而不是2019-01-01
我应该如何将其解析为确切的日期?您可以尝试使用以下方法:
select CAST('2019-01-01T07:56:34Z' AS date)
您是否可以尝试使用以下方法:
select CAST('2019-01-01T07:56:34Z' AS date)
我建议显式指定时区,例如使用函数。否则,America/Los_Angeles是默认时区,相对于您提供的时间戳时区,该时区偏移了-8小时。您提供的时间戳文字将Z Zulu时间指定为时区偏移量
# 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 |
+------------+
我建议显式指定时区,例如使用函数。否则,America/Los_Angeles是默认时区,相对于您提供的时间戳时区,该时区偏移了-8小时。您提供的时间戳文字将Z Zulu时间指定为时区偏移量
# 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 |
+------------+
讽刺的是,当我运行它时,我得到了正确的日期。这显然是一个时区问题 如果要按原样从字符串中提取日期,请使用子字符串获取日期组件并转换为日期:
CAST(SUBSTR('2019-01-01T07:56:34Z', 1, 10) as DATE)
讽刺的是,当我运行它时,我得到了正确的日期。这显然是一个时区问题 如果要按原样从字符串中提取日期,请使用子字符串获取日期组件并转换为日期:
CAST(SUBSTR('2019-01-01T07:56:34Z', 1, 10) as DATE)
无法将文字2019-01-01T07:56:34Z转换为第1行的类型日期,第13列直接转换在扳手中产生此问题。无法将文字2019-01-01T07:56:34Z转换为第1行的类型日期,第13列直接转换在扳手中产生此问题。这可以使用,但这可能会为其他时间戳造成问题。您能详细说明它会造成什么问题吗?可以使用,但这可能会为其他时间戳造成问题。您能详细说明它会造成什么问题吗?