【问题标题】:changing Date format in query更改查询中的日期格式
【发布时间】:2021-03-09 10:09:59
【问题描述】:

在我的程序的某些部分,我想运行一个 sql 查询并得到一个类似日期的结果:%Y/%m/%d %H:%M:%S

SELECT MAX(created_at)
FROM HOT_FILES_LOGS
WHERE FILE_NAME = 'test'

created_at 列中的日期存储为 04/03/2021 15:45:30(它充满了 SYSDATE) 但是当我运行这个查询时,我只得到 04.03.21

我应该怎么做才能解决它?

【问题讨论】:

  • created_at 列中的日期存储为 04/03/2021 15:45:30 实际上,它不是。 (只是一个旁注,对您的问题并不重要。)

标签: oracle date plsql


【解决方案1】:

使用适当的格式掩码应用TO_CHAR

select to_char(max(created_at), 'yyyy.mm.dd hh24:mi:ss') as created_at
from hot_files_logs
where file_name = 'test'

【讨论】:

  • 关于不同日期格式模型的文档链接怎么样?也许还有关于默认日期格式模型的解释?
【解决方案2】:

Oracle 不以任何显示格式存储日期或时间戳,它们存储在内部结构中,每个 Oracle 数据库中的每个日期至少从 8i 开始,可能更早。此结构由7 1-byte integers (类似但更大的结构中的时间戳)组成。日期的显示方式或转换为日期的字符串由 to_char 或 to_date 函数中指定的日期格式字符串控制,或者如果NLS_DISPLAY_FORMAT 设置没有给出格式字符串。要了解内部设置,请运行以下命令:

 create table td( d date);
 insert into td(d) values(sysdate); 
 select d "The Date" , dump(d) "Stored As" from td;

example。最后使用的格式不实用,但可以严格证明。好吧,我想你可以用它来播种一个可重复的随机序列。

【讨论】:

    猜你喜欢
    • 2011-02-04
    • 1970-01-01
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多