0

我需要删除在最后一分钟插入的记录,并且我必须使用我的数据库中存在并且实际上被截断的特定系统日期(从双重返回 20/3/2014 中选择 sys_date)。我尝试将日期格式化为显示分钟,然后将其再次转换为日期,以便使用 sys_date si sys_date-1 分钟之间选择在最后一分钟插入的记录,但我似乎没有朝着好的方向前进。例如:

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

返回 19/3/2014 11:59:00 PM,这与我的格式掩码不匹配,老实说,我真的不明白(这非常令人沮丧)为什么作为内部选择返回的字符串

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

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

4

1 回答 1

0

要选择在最后一分钟插入的行:

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

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

SYSDATE 始终返回当前日期时间,但您在 SQL Plus、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
于 2015-01-08T16:40:18.047 回答