Sql 将大查询表架构从字符串(YYYY-MM-DD HH:MM:SS时区)修改为日期时出现无效的日期错误

Sql 将大查询表架构从字符串(YYYY-MM-DD HH:MM:SS时区)修改为日期时出现无效的日期错误,sql,google-bigquery,Sql,Google Bigquery,我有一个带有字符串格式列的表,其中的值如下: YYYY-MM-DD HH:MM:SS时区2015-08-27 19:42:53 UTC UTC是唯一的时区。我想将此字符串列重写为日期列。当我试图运行以下查询以将结果导出到新表中时,出现无效日期错误 SELECT CAST(my_date AS DATE),stuff_here,stuff_here FROM `table` 为了正确地将此列的类型从string更改为date,我应该怎么做 您似乎正在尝试编写以下逻辑: select CA

我有一个带有字符串格式列的表,其中的值如下:

YYYY-MM-DD HH:MM:SS时区
2015-08-27 19:42:53 UTC

UTC是唯一的时区。我想将此字符串列重写为日期列。当我试图运行以下查询以将结果导出到新表中时,出现
无效日期错误

SELECT
  CAST(my_date AS DATE),stuff_here,stuff_here
FROM
  `table`

为了正确地将此列的类型从string更改为date,我应该怎么做

您似乎正在尝试编写以下逻辑:

select CAST(substr('2015-08-27 19:42:53 UTC', 1, 10) AS DATE)
因为我在纽约,我会写:

select date(timestamp('2015-08-27 19:42:53 UTC'), 'America/New_York')
这一区别在我们使用数据时非常重要——格林威治子午线与本地区的天数之差。

试试:

SELECT CAST(SUBSTR(my_date,1,19) AS DATE,stuff_here,stuff_here
  FROM `table`

这假设您对时区部分不感兴趣。

您是否尝试过解析时间戳?您可以将时间戳强制转换为日期。而不是强制转换?解析为时间戳,然后强制转换为日期。为什么强制转换/日期方法和数据/时间戳方法之间存在差异?为什么我们不需要用时间戳替换?@SimonBreton。因为时间戳包含时间组件,而日期不包含。