Snowflake cloud data platform 使用to_Date将VARCHAR转换为Date
我有一组数据,其中col是VARCHAR(),但我需要它是日期格式 我试着按如下方式做:Snowflake cloud data platform 使用to_Date将VARCHAR转换为Date,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我有一组数据,其中col是VARCHAR(),但我需要它是日期格式 我试着按如下方式做: 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 CREATE OR REPLACE TABLE df_new AS SELECT col1 AS NAME ,col
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
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
但我收到一个错误“无法将“”解析为格式为'yyyymmdd'的日期”
我尝试过修改日期格式的输入(例如'yyyy/mm/dd'),但我对SQL非常陌生,因此我不确定如何继续。听起来有些col4条目是空字符串或空字符串。试试看吧
... FROM df_old WHERE col4 ~ '[0-9]{8}'
仅选择有效输入。为了清楚起见,如果您将格式设置为“YYYYMMDD”(您应该使用大写),col4中的条目必须看起来像“20190522”。仅使用,对于无法解析输入的值,它将返回NULL。所有日期都以内部格式存储。
您不能影响日期的存储方式。但是,当您通过查询从数据库中提取数据时,它可以按照您想要的方式进行格式化 我可以通过以下方法解决: 创建或替换表格df_new 作为选择 ,col1作为名称 ,col2作为名字 ,col3作为姓氏 ,当“col4”=”时为大小写,然后将ELSE设置为NULL,以_DATE(col4,'yyyyymmdd')作为日期
从df_old我解决了以下问题:
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
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
如果您确定除null以外的所有值都是字符串“yyyyymmdd”,那么以下内容将在snowflake中使用
TO_DATE(TO_CHAR(datekey),'yyyymmdd')
我认为您100%正确地解释了为什么我收到的错误是确实存在的空值。现在添加REGEXP_LIKE时的问题是行中没有填充任何内容。我会继续捣乱的。谢谢你的帮助!啊,对不起,我使用Oracle语法有点仓促,如果你在Postgres上,你会想使用~operator。Snowflake是一个与PostgreSQL截然不同的DBMS产品。你到底在用哪一个?Postgres中没有
创建或替换表
,所以显然是雪花而不是Postgressory,你是对的。作业上说它就像PostgreSQL。我误解了这一点。