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'
永远不要那样做。您正在将 DATE 与 STRING 进行比较,您可能只是幸运地获得了正确的数据,具体取决于您的 locale-specific NLS设置。但是,永远不要依赖 隐式数据类型转换。
将它用于对两者都有效的东西:
CAST('2015-09-14' as date)
转换仅执行一次,因此对性能没有影响。
如标题所示,我正在尝试进行统一查询,它具有与 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'
永远不要那样做。您正在将 DATE 与 STRING 进行比较,您可能只是幸运地获得了正确的数据,具体取决于您的 locale-specific NLS设置。但是,永远不要依赖 隐式数据类型转换。
将它用于对两者都有效的东西:
CAST('2015-09-14' as date)
转换仅执行一次,因此对性能没有影响。