在查询中改变日期格式



在我的程序的某些部分,我想运行一个sql查询,结果是一个日期,如:% Y/%m/%d %H:% m:%S

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

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

我应该做些什么来修复它?

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'

Oracle不以任何显示格式存储日期或时间戳,它们存储在内部结构中,至少从8i开始,甚至更早,所有Oracle数据库中的每个日期。这个结构由7个1字节的整数(时间戳在一个类似但更大的结构中)组成。如何显示日期或将字符串转换为日期由to_char或to_date函数中指定的日期格式字符串控制,如果NLS_DISPLAY_FORMAT设置没有给出格式字符串,则由该函数控制。要在内部设置中获得一个gimps,运行以下命令:

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

看到的例子。最后使用的格式不实用,但严格可演示。我猜你可以用它来播种一个可重复的随机序列。

最新更新