【发布时间】:2017-10-31 23:56:58
【问题描述】:
我更改了我的数据库 oracle -> sybase
所以我应该更改我的查询。
但我不知道如何转换我的查询
此外,我必须在这两个查询中(oracle 和 sybase => 我不能使用转换方法)
我的查询是:
select ...
TO_CHAR(Reg_Date,'yyyy/mm/dd hh24:mi:ss') Reg_Date....
from ...
where ...
请帮忙。
【问题讨论】:
-
“我必须在这两个查询中(oracle n sybase => 我不能使用转换方法)”。 Oracle 和 Sybase 是不同的产品 - 没有通用的方法可以满足您的需求,因此您需要对每个数据库进行单独的查询:Oracle 中的 to_char(...) 和 Sybase 中的 convert(...)。
-
据我所知,如果我使用 'cast' 而不是 'convert' 查询运行良好,是不是错了?
-
不幸的是,您不能只将字符串转换为日期,因为需要知道日期格式。 (“03/01/2017”可能表示 2017-03-01 或 2017-01-03,具体取决于您的区域设置。)没有与数据库无关的方式来做您想做的事情。
-
ANSI SQL 日期格式为 'YYYY-MM-DD',但 Oracle 默认为 'DD-MON-YYYY'。因此,为了让您拥有相同的 SQL 语法,您需要在会话开始时或在会话连接触发器上通过 alter session set nls_date_format=YYYY-MM-DD 在 Oracle 中设置会话默认格式。然后你的 SQL 将跨平台作为“从 table_name 中选择 datecol”;
-
如果您想要一个在所有 DBMS 中工作的 SQL,请不要在 SQL 查询中格式化日期 - 在您的应用程序中进行。
标签: sql oracle sybase database-migration date-formatting