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



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

例如YYYY-MM-DD HH:MM:SS TIMEZONE2015-08-27 19:42:53 UTC

UTC 是唯一的时区。我想将此字符串列重写为日期列。当我尝试运行以下查询以将结果导出到新表中时,我有一个Invalid date error

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

我应该怎么做才能正确将此列的类型从字符串更改为日期?

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

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`

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

最新更新