使用TO_DATE

时间:2019-05-21 22:04:25

标签: snowflake

我有一组数据,其中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来说我还是很陌生,所以我不确定如何进行操作。

5 个答案:

答案 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