是否可以使用时间戳而无需在Oracle中将其转换为String?

Phi*_*ffi -1 sql oracle oracle10g

我有一个查询,其中一个过滤器是一个日期,是否可以在Oracle中过滤类似下面的内容?

SELECT * FROM tabela WHERE dateField = '2014-02-10 15:56:00.000'
Run Code Online (Sandbox Code Playgroud)

或者我们是否总是要将其转换为String?

SELECT * FROM tabela WHERE dateField = TO_DATE('10/02/2014 15:56:00', 'DD/MM/YYYY HH24:mi:ss')
Run Code Online (Sandbox Code Playgroud)

我正在使用Oracle 10g.

a_h*_*ame 5

您的第一个查询依赖于隐式数据类型转换,这是一件非常糟糕的事情(并且迟早会给您带来问题).

第二个正确地将日期与日期进行比较,这是正确的方法.

如果您不想输入那么多,可以使用ANSI SQL时间戳文字:

SELECT * 
FROM tabela 
WHERE dateField = timestamp '2014-02-10 15:56:00.000';
Run Code Online (Sandbox Code Playgroud)

请注意,格式必须是文字中的ISO(即yyyy-mm-dd和24小时)