to_date 和 to_char 问题

to_date and to_char issue

我需要删除最后一分钟插入的记录,我必须使用我的数据库中存在的特定系统日期,该日期实际上被截断了(select sys_date from dual returns 2014 年 3 月 20 日)。我尝试格式化日期以显示分钟,然后再次将其转换为日期,以便在最后一分钟使用 sys_date si sys_date-1 分钟插入 select 记录,但它没有看来我正朝着好的方向前进。例如:

select to_date(to_char((sys_date - 1 / (24 * 60)), 'DD/MM/YYYY HH24:MI:SS'),'DD/MM/YYYY HH24:MI:SS') from dual;

returns 19/3/2014 11:59:00 下午,这与我的格式掩码不匹配,老实说我真的不明白(这很令人沮丧)为什么返回的字符串内部 select

select to_char((sys_date - 1 / (24 * 60)), 'DD/MM/YYYY HH24:MI:SS') from dual;

returns 2014 年 3 月 19 日 23:59:00。 非常感谢任何帮助或建议:) 谢谢!

到最后一分钟插入的 select 行:

select *
from   my_table
where  inserted_date > sysdate-1/(24*60);

(假设您的 table 有一个名为 inserted_datedate 列,其中包含插入的日期和时间。)

SYSDATE 总是 returns 当前日期 时间,但是你在工具中看到的像SQL 另外,SQL Developer 或 Toad 取决于用于将其转换为要显示的字符串的默认格式掩码。通常默认情况下这些不显示时间。在 SQL Plus 中,您可以这样做:

SQL> alter session set nls_date_format='DD_MON-YYYY HH24:MI:SS';

Session altered.

SQL> select sysdate from dual;

SYSDATE
--------------------
08_JAN-2015 16:37:00