Oracle SQL 和 SQL 服务器中的统一 SQL 日期

Uniform SQL Date in Oracle SQL and SQL Server

如标题所示,我正在尝试进行统一查询,它具有与 Oracle SQL 和 SQL Server

兼容的语法

我目前的语法是用 Oracle 编写的:

SELECT * 
FROM TableA
WHERE CREATION_DATE = TO_DATE('12-09-2015', 'DD-MM-YYYY') 

当我尝试在 SQL 服务器中构建它时,这不起作用。 SQL服务器的语法是

SELECT * 
FROM TableA 
WHERE OrderDate='12-09-2015'

但这在 Oracle 中不起作用 SQL...

那么统一的写法是什么?

我不确定 SQL 服务器是否支持 ANSI DATE 文字,但它在 Oracle 中受支持。默认字符串文字格式为 YYYY-MM-DD.

DATE '2015-09-12'

因此,如果 SQL 服务器也支持 ANSI 标准,则使用它。很简单。

基于此link,我认为您可以在两个数据库中使用以上内容。

WHERE OrderDate='12-09-2015'

永远不要那样做。您正在将 DATESTRING 进行比较,您可能只是幸运地获得了正确的数据,具体取决于您的 locale-specific NLS设置。但是,永远不要依赖 隐式数据类型转换

将它用于对两者都有效的东西:

CAST('2015-09-14' as date)

转换仅执行一次,因此对性能没有影响。