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

问题描述 投票:0回答:2

我有一个从表中提取的字符串字段,我试图将其转换为我创建的视图中的日期。不过,当我尝试将其投射为日期时,我不断收到错误消息。该字段的格式如下所示:

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'
date casting google-bigquery
2个回答
0
投票

将字符串转换为日期

以下适用于 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
投票

如果您有问题 sql impala >> UDF 错误:字符串到日期解析失败。无效的字符串值:“20000000”

您的数据中有错误。尝试这样做。只需更改您的字段日期

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

© www.soinside.com 2019 - 2024. All rights reserved.