Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 使用混合日期格式的HANA中的to_日期_Date_Format_Hana_To Date - Fatal编程技术网

Date 使用混合日期格式的HANA中的to_日期

Date 使用混合日期格式的HANA中的to_日期,date,format,hana,to-date,Date,Format,Hana,To Date,如果原点中有不同的日期格式,您可以做什么 我有一个例子,我们使用to_date函数从表中获取信息,但我得到了一个错误,因为有些记录的日期格式是YYYY-DD-MM而不是YYYY-MM-DD 如何对此应用统一的解决方案?要处理这种情况(任意文本应转换为结构化日期值),我可能会使用正则表达式 这样,您就可以选择适合您想要支持的格式的记录集,并对这些记录执行类型转换 例如: create column table date_vals (dateval nvarchar (4000), date_val

如果原点中有不同的日期格式,您可以做什么

我有一个例子,我们使用
to_date
函数从表中获取信息,但我得到了一个错误,因为有些记录的日期格式是
YYYY-DD-MM
而不是
YYYY-MM-DD

如何对此应用统一的解决方案?

要处理这种情况(任意文本应转换为结构化日期值),我可能会使用正则表达式

这样,您就可以选择适合您想要支持的格式的记录集,并对这些记录执行类型转换

例如:

create column table date_vals (dateval nvarchar (4000), date_val date)

insert into date_vals values ('2018-01-23', NULL);
insert into date_vals values ('12/23/2016', NULL);

    select dateval, to_date(dateval, 'YYYY-MM-DD') as SQL_DATE
    from date_vals
    where 
        dateval like_regexpr '[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}'

    union all

    select dateval, to_date(dateval, 'MM/DD/YYYY') as SQL_DATE
    from date_vals
    where 
        dateval like_regexpr '[[:digit:]]{2}/[[:digit:]]{2}/[[:digit:]]{4}';
这种方法还提供了一个很好的选项来检查不匹配的记录,并可能提出额外的所需模式。

要处理这种情况(任意文本应转换为结构化日期值),我可能会使用正则表达式

这样,您就可以选择适合您想要支持的格式的记录集,并对这些记录执行类型转换

例如:

create column table date_vals (dateval nvarchar (4000), date_val date)

insert into date_vals values ('2018-01-23', NULL);
insert into date_vals values ('12/23/2016', NULL);

    select dateval, to_date(dateval, 'YYYY-MM-DD') as SQL_DATE
    from date_vals
    where 
        dateval like_regexpr '[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}'

    union all

    select dateval, to_date(dateval, 'MM/DD/YYYY') as SQL_DATE
    from date_vals
    where 
        dateval like_regexpr '[[:digit:]]{2}/[[:digit:]]{2}/[[:digit:]]{4}';

这种方法还提供了一个很好的选项来检查不匹配的记录,并可能提出其他所需的模式。

为什么不在选择测试不同正则表达式的位置时使用case,然后使用to_date以正确的格式返回日期呢

这将避免使用union all和2个select语句

您可以在一个附加的联合中添加更多的“格式”,而无需更多的“选择”


除非like_regexpr只在where子句中起作用(我必须承认我从未尝试过该函数)。

在选择要测试不同正则表达式的位置时,为什么不使用case,然后使用to_日期以正确的格式返回日期

这将避免使用union all和2个select语句

您可以在一个附加的联合中添加更多的“格式”,而无需更多的“选择”


除非like_regexpr只在where子句中起作用(我必须承认我从未尝试过该函数)。

如何解决这个问题?当然,如果数字大于12,则不可能是一个月,但如果您看到2018-03-02,则可以是双向的。表中是否有第二个字段定义所使用的格式?如果没有它,你就很困难了。请记住,如果它是系统中的日期格式,那么它的显示方式并不重要。但是,如果系统将其存储为字符串数据,那么是的,您确实有一个无法解决的问题。如何解决这个问题?当然,如果数字大于12,则不可能是一个月,但如果您看到2018-03-02,则可以是双向的。表中是否有第二个字段定义所使用的格式?如果没有它,你就很困难了。请记住,如果它是系统中的日期格式,那么它的显示方式并不重要。但是,如果系统将其存储为字符串数据,则是的,您确实存在无法解决的问题。这似乎是对我的答案的评论,而不是对问题的单独回答。是的,但我找不到将其作为评论添加到您的首字母中的方法(我的声誉可能还不允许我这样做)。这似乎是对我答案的评论,而不是对问题的单独回答。是的,但我找不到方法将其作为评论添加到您的首字母中(我的声誉可能还不允许我这样做)。