当时间戳与另一个时间戳完全一样时,如何删除行

时间:2018-10-23 15:25:57

标签: database oracle

我有1个表有一个timestamp列,我正在尝试删除一个以timestamp列为主键的行,那么如何删除该行?

例如:

Delete from access where timeStamp_column = '13/04/18 07:15:31,123457000'; 

类似的事情,我一直在搜索,但是我发现的只是“如何删除比等早的时间戳”,我需要它与我写的相同

谢谢,人们!

请问我的英语:)

1 个答案:

答案 0 :(得分:1)

您依赖于基于会话NLS设置的隐式转换,这从来都不是一个好主意。您应该使用to_timestamp()和适当的格式掩码对字符串值进行显式转换。

看起来特别可疑的两件事是两位数的年份-如果您的NLS_TIMESTAMP_FORMAT的YYYY将寻找0018而不是2018;可能是小时值07-您没有AM / PM标记,因此,如果您的NLS_TIMESTAMP_FORMAT具有HH:MI:SS,FF9 AM'(或HH:... PMHH:...而没有AM或PM),那么您可能会选择错误的时间。

如果您有固定值,则可以使用时间戳文字:

delete from access
where timeStamp_column = timestamp '2018-04-13 07:15:31.123457000'; 

否则将进行显式转换:

delete from access
where timeStamp_column = to_timestamp('13/04/18 07:15:31,123457000',
  'DD/MM/RR HH24:MI:SS,FF9');

(假设确实应该是上午7点;如果应该是下午7点,则将07更改为19)。