to_date和to_char问题

时间:2015-01-08 16:31:19

标签: oracle11g type-conversion to-date to-char

我需要删除在最后一分钟插入的记录,我必须使用我的数据库中存在的特定系统日期,并且实际上是截断的(从双返回中选择sys_date 20/3/2014)。我试图格式化日期以显示分钟,然后再将其转换为日期,以便在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;

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

1 个答案:

答案 0 :(得分:0)

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

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

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

inserted_date 始终会返回当前日期时间,但您在SQL Plus,SQL Developer或Toad等工具中看到的内容取决于默认格式用于将其转换为要显示的字符串的掩码。通常默认情况下,这些不显示时间。在SQL Plus中,您可以这样做:

SYSDATE