我有1个表有一个timestamp列,我正在尝试删除一个以timestamp列为主键的行,那么如何删除该行?
例如:
Delete from access where timeStamp_column = '13/04/18 07:15:31,123457000';
类似的事情,我一直在搜索,但是我发现的只是“如何删除比等早的时间戳”,我需要它与我写的相同
谢谢,人们!
请问我的英语:)
答案 0 :(得分:1)
您依赖于基于会话NLS设置的隐式转换,这从来都不是一个好主意。您应该使用to_timestamp()
和适当的格式掩码对字符串值进行显式转换。
看起来特别可疑的两件事是两位数的年份-如果您的NLS_TIMESTAMP_FORMAT
的YYYY将寻找0018而不是2018;可能是小时值07-您没有AM / PM标记,因此,如果您的NLS_TIMESTAMP_FORMAT
具有HH:MI:SS,FF9 AM'
(或HH:... PM
或HH:...
而没有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)。