【问题标题】:Truncate time from datetime in PRESTO从 PRESTO 中的日期时间截断时间
【发布时间】:2018-04-24 04:19:59
【问题描述】:

我需要从 Presto 中的日期时间截断时间。 我注意到我不能使用 Redshift 中使用的 Trunc() 函数来实现相同的目的。

date_trunc() 返回一个时间戳,再次重置为开始。

【问题讨论】:

    标签: date datetime truncate presto


    【解决方案1】:

    Cast日期时间到日期

    CAST(x AS DATE)
    
    date(x) -- This is an alias for CAST(x AS DATE).
    

    如果要转换的日期/时间值保存为字符串,则此类转换可能会失败;其中推荐使用TRY_CAST(),因为如果转换失败则返回NULL。

    【讨论】:

    • try_cast 对于可能失败的转换可能很有用,例如varcharnumber——不是每个文本都是全数字的,因此这个转换是一个部分函数。从timestampdate 的转换不会失败,因为每个时间戳都有一个日期组件,这个转换是一个函数(不是部分函数)。 TL;DR try_cast 在这种情况下没有用处。
    • @PiotrFindeisen 在我的回答中提到try_cast() 是针对您可能(不幸地)必须处理存储为字符串的日期/时间数据的任何人。所以我希望这一点更加明显。谢谢。
    猜你喜欢
    • 2020-01-06
    • 1970-01-01
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    相关资源
    最近更新 更多