无法在oracle中删除sysdate上的记录

无法在oracle中删除sysdate上的记录,oracle,Oracle,我一直在尝试从一个表中删除记录,该表的当前日期在oracle中为sysdate。你可以参考下面我尝试的图片 表结构和插入的数据 查询记录 正如您在第一张图片中看到的,更新日期的类型是date。当我进行插入时,数据将与sysdate一起插入,但当我尝试选择/删除时,它在第二个图像中不起作用 起初,我认为这可能是由于时间的变化造成的,但类型是date,甚至我也尝试将其格式设置为dd mon yy,这样就不应该出现这种情况了,因为date数据类型包含时间组件,它不会显示在您的工具中 日期数据类型

我一直在尝试从一个表中删除记录,该表的当前日期在oracle中为sysdate。你可以参考下面我尝试的图片

表结构和插入的数据

查询记录

正如您在第一张图片中看到的,更新日期的类型是date。当我进行插入时,数据将与sysdate一起插入,但当我尝试选择/删除时,它在第二个图像中不起作用


起初,我认为这可能是由于时间的变化造成的,但类型是date,甚至我也尝试将其格式设置为dd mon yy,这样就不应该出现这种情况了,因为date数据类型包含时间组件,它不会显示在您的工具中

日期数据类型在表中存储时间点值(日期和时间)。日期数据类型存储年份(包括世纪)、月份、日期、小时、分钟和秒(午夜后)。

您需要截断
SYSDATE
updated\u date

SELECT * FROM EMPL WHERE TRUNC(updated_date) = TRUNC(SYSDATE);
要检查“实际值”,您应该更改NLS\u日期格式:

alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS';
SELECT * FROM EMPL;

DATE
数据类型具有时间组件,该组件不显示在工具中

日期数据类型在表中存储时间点值(日期和时间)。日期数据类型存储年份(包括世纪)、月份、日期、小时、分钟和秒(午夜后)。

您需要截断
SYSDATE
updated\u date

SELECT * FROM EMPL WHERE TRUNC(updated_date) = TRUNC(SYSDATE);
要检查“实际值”,您应该更改NLS\u日期格式:

alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS';
SELECT * FROM EMPL;

永远不要对已经是日期的值调用
到\u date()
。这将首先将
date
值转换为
varchar
,只是将
varchar
转换回一个开始的
date
。您想要
trunc(updated_date)=trunc(sysdate)
我试图更改日期,因为我认为时间的变化是更改日期的原因(updated_date,'dd-mon-yy'))应该可以工作,但din甚至认为左操作数也需要一个to_date(更新的日期,'dd-mon-yy')/trunc,因为它得到了insertedAgain:永远不要使用已经是日期(或时间戳)的参数调用
to_date()
。这是完全错误的。是的,我明白你的意思,我的意思是我应该在两边都使用trunc,是的,通过to_date()再次转换日期是没有意义的。谢谢,伙计。永远不要对已经是日期的值调用
到\u date()
。这将首先将
date
值转换为
varchar
,只是将
varchar
转换回一个开始的
date
。您想要
trunc(updated_date)=trunc(sysdate)
我试图更改日期,因为我认为时间的变化是更改日期的原因(updated_date,'dd-mon-yy'))应该可以工作,但din甚至认为左操作数也需要一个to_date(更新的日期,'dd-mon-yy')/trunc,因为它得到了insertedAgain:永远不要使用已经是日期(或时间戳)的参数调用
to_date()
。这是完全错误的。是的,我明白你的意思,我的意思是我应该在两边都使用trunc,是的,通过to_date()再次转换日期是没有意义的。谢谢,伙计。是的,你是对的。我在比较运算符的右边试过了,但在左边没有。时间上的更改是插入后更改值的唯一原因。谢谢是的,你是对的,我在比较运算符的右侧尝试过,但在左侧没有。时间上的更改是插入后更改值的唯一原因。谢谢