【问题标题】:oracle: sysdate as timestamp while the time is 00:00:00.0oracle: sysdate 作为时间戳,而时间是 00:00:00.0
【发布时间】:2014-09-16 02:11:50
【问题描述】:

我需要以时间戳格式获取 sysdate,而时间将为:00:00:00.0

今天的例子: 2014-07-24 00:00:00.000000

如何制作?

低于当前代码。要改什么?

declare
  v_t timestamp; 
begin
  v_t := to_timestamp(systimestamp);
  DBMS_OUTPUT.PUT_LINE(v_t);
end;

【问题讨论】:

    标签: sql oracle date time timestamp


    【解决方案1】:

    要删除时间戳的时间部分,您可以使用TRUNC() 函数:

    ...
    v_t := to_timestamp(trunc(systimestamp));
    ...
    

    请注意,TIMESTAMP 数据类型本身没有格式,因此打印时间戳将生成取决于您的区域设置的格式。为确保某些格式,您需要使用带有适当格式字符串的 TO_CHAR() 函数。

    【讨论】:

    • @AlexPoole -- 当然这是多余的,但这就是 OP 所拥有的。
    • @AlexPoole -- 顺便说一下,如果结果必须有小数秒,to_timestamp()不是冗余的,因为trunc() 返回一个DATE 数据类型, 没有有小数秒。
    • 天啊,它当然会...对不起,脑力衰竭! (它在 OP 的版本中是多余的,这可能部分让我感到困惑。虽然很容易做到)。不过,它仍在与字符串进行隐式转换,因此很容易受到 NLS 问题的影响 - 我可能会使用 cast
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多