Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将时间戳转换为日期时,会产生一个(日期+1)_Sql_Date_Datetime_Google Cloud Platform_Google Cloud Spanner - Fatal编程技术网

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列直接转换在扳手中产生此问题。这可以使用,但这可能会为其他时间戳造成问题。您能详细说明它会造成什么问题吗?可以使用,但这可能会为其他时间戳造成问题。您能详细说明它会造成什么问题吗?