SQL-将月份字符串'08 -2019'转换为时间戳数据类型-01-08-2019

时间:2019-09-09 08:21:38

标签: sql google-bigquery

我有一列-local_month-包含字符串值“ 2019-08”。有什么想法可以将其转换为时间戳数据类型吗?

我当前的方法是获取该值的子字符串,以产生01-08-2019的值。当我尝试将其用作时间戳时,这仍然给我一个错误。

FORMAT_TIMESTAMP("%d-%m-%Y",TIMESTAMP(DATE(cast(SUBSTR(local_month,1,4) as int64),cast(SUBSTR(local_month,6,2) as int64),cast('01' as int64)))) as month  

2 个答案:

答案 0 :(得分:0)

您可以使用PARSE_DATE,然后将输出转换为时间戳,因为PARSE_DATE将返回DATE

with parse_date AS (SELECT PARSE_DATE("%m-%Y", '08-2019') as date)

SELECT FORMAT_TIMESTAMP('%d-%m-%Y', CAST(date as TIMESTAMP)) from parse_date

将输出以下内容:

Row |   f0_ 
------------------
1   |   01-08-2019

有关PARSE_DATE功能的更多信息,可以在public docs中找到。

答案 1 :(得分:0)

只需使用PARSE_()函数之一。就您而言,PARSE_TIMESTAMP()

SELECT PARSE_DATE('%m-%Y', '08-2019'),
       PARSE_DATETIME('%m-%Y', '08-2019'),
       PARSE_TIMESTAMP('%m-%Y', '08-2019')