在大查询错误中将字符串转换为日期

Convert String to Date in Big Query error

提问人:jbfdataguru 提问时间:7/22/2020 最后编辑:dbaltorjbfdataguru 更新时间:11/21/2023 访问量:1969

问:

我有一个从表中提取的字符串字段,我正在尝试将其转换为我创建的视图中的日期。不过,在尝试将 Cast 作为日期时,我总是收到错误。该字段的格式如下所示:

2020 年 7 月 19 日或 2020年8月8日等。

我收到一个错误,指出

“无法解析输入字符串”2020 年 7 月 19 日”

或尝试使用DATE_Parse时数据中的其他日期之一。或者我得到

“无效日期:2020年8月8日”

如果我尝试使用 CAST 函数。

以下是我在尝试投射日期时的查询:

select
noteattributes.value.name as name_type, noteattributes.value.value as name_value, CAST(noteattributes.value.value as DATE) as DATE_TEST, order_number
from test.orders,
unnest(note_attributes) as noteattributes
where noteattributes.value.name = 'Pickup-Date'
日期 转换 google-bigquery

评论


答:

0赞 Mikhail Berlyant 7/22/2020 #1

将字符串转换为日期

下面适用于 BigQuery 标准 SQL

您应该使用 PARSE_DATE 而不是 CAST,如下例所示

PARSE_DATE('%B %d, %Y', date_as_string)

您可以使用以下示例进行测试和尝试

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'July 19, 2020' date_as_string UNION ALL
  SELECT 'August 8, 2020'
)
SELECT PARSE_DATE('%B %d, %Y', date_as_string) AS date_as_date
FROM `project.dataset.table`    

带输出

Row date_as_date     
1   2020-07-19   
2   2020-08-08   
0赞 Davey Havok 11/15/2023 #2

如果您有问题 SQL Impala >>UDF ERROR: String to Date parse failed. Invalid string val: "20000000"

你有数据问题。尝试这样做,更改您的字段Date

IF(length(FieldDate)!=8 OR cast(substr(trim(FieldDate),5,4) as BIGINT)=0, NULL, CAST(trim(FieldDate) AS DATE FORMAT 'yyyymmdd')) as Out_FieldDate,