我有一组数据,其中col为VARCHAR(),但我需要它为DATE格式。
我正尝试如下操作:
CREATE OR REPLACE TABLE df_new
AS SELECT
col1 AS NAME
col2 AS first_name
col3 AS last_name
,TO_DATE(col4, 'yyyymmdd') AS date
FROM df_old
但是我收到错误消息“无法将”解析为日期,格式为“ yyyymmdd””。
我曾尝试弄乱日期格式的输入(例如'yyyy / mm / dd'),但对于SQL来说我还是很陌生,所以我不确定如何进行操作。
答案 0 :(得分:1)
仅使用TRY_TO_DATE
,对于无法解析输入的值,它将返回NULL。
答案 1 :(得分:0)
像某些col4条目一样的声音是NULL或空字符串。尝试也许
... FROM df_old WHERE col4 ~ '[0-9]{8}'
仅选择有效输入。需要明确的是,如果将格式设置为“ YYYYMMDD”(应使用大写字母),则col4中的条目必须类似于“ 20190522”。
答案 2 :(得分:0)
所有日期均以内部格式存储。 您无法影响日期的存储方式。但是,当您通过查询从数据库中提取数据时,可以按照所需的方式对其进行格式化。
答案 3 :(得分:0)
我能够通过以下方式解决:
创建或替换表df_new 选择 ,col1作为名称 ,col2 AS first_name ,col3 AS last_name ,CASE WHEN“ col4” =``然后为NULL ELSE TO_DATE(col4,'YYYYMMDD')AS日期 从df_old
答案 4 :(得分:0)
我解决了以下问题:
CREATE OR REPLACE TABLE df_new
AS SELECT
col1 AS NAME
,col2 AS first_name
,col3 AS last_name
,CASE WHEN col4 = '' THEN NULL ELSE TO_DATE(col4, 'YYYY-MM-DD') END AS date
FROM df_old