我可以验证字符串是 Presto 中的有效日期吗

Posted

技术标签:

【中文标题】我可以验证字符串是 Presto 中的有效日期吗【英文标题】:Can I validate that a string is a valid date in Presto 【发布时间】:2022-01-10 05:35:10 【问题描述】:

在尝试在选择查询中解析月份之前,我想检查 sales_date 字段是否为有效日期:

现在,我正在这样做:如果 sales_date 不是有效日期,则查询会出错

SELECT CAST(YEAR(DATE(sales_date)) from sales

我想做类似CASE sales_date is a valid date 的操作,以防止在只有一行无效时查询出错。

但找不到执行此操作的 presto 函数。

【问题讨论】:

【参考方案1】:

您可以使用try,如果日期转换失败,它将返回 null:

WITH dataset(ts) AS (
    values 
        ('2021-08-22'),
        ('2021-08-22'),
        ('2021-22-08'),
        ('not a date')
)

select try(date(ts))
from dataset

输出:

_col0
2021-08-22
2021-08-22
 
 

【讨论】:

以上是关于我可以验证字符串是 Presto 中的有效日期吗的主要内容,如果未能解决你的问题,请参考以下文章

从 Presto SQL 中的字符串获取日期

接收字符串并使用 date-fns 验证它是不是是有效日期

presto - 获取最近一个星期六的日期

如何从 Presto 中的日期获取月份名称

Presto SQL - 将日期字符串转换为日期格式

跳过格式错误的日期解析 presto