Sql 相当于Oracle到_字符的Sybase(日期时间)

Sql 相当于Oracle到_字符的Sybase(日期时间),sql,oracle,sybase,database-migration,date-formatting,Sql,Oracle,Sybase,Database Migration,Date Formatting,我更改了数据库oracle->sybase 因此,我必须更改我的查询。 但我不知道如何转换我的查询 此外,我必须在这两种语言中都使用这个查询(oracle和N sybase=>我不能使用convert方法) 我的问题是: select ... TO_CHAR(Reg_Date,'yyyy/mm/dd hh24:mi:ss') Reg_Date.... from ... where ... 请提供帮助。在“Sybase”名称下有4种不同的数据库产品。。。AdaptiveServerEnterp

我更改了数据库oracle->sybase

因此,我必须更改我的查询。
但我不知道如何转换我的查询

此外,我必须在这两种语言中都使用这个查询(oracle和N sybase=>我不能使用convert方法)

我的问题是:

select ... 
TO_CHAR(Reg_Date,'yyyy/mm/dd hh24:mi:ss') Reg_Date....
from ...
where ...

请提供帮助。

在“Sybase”名称下有4种不同的数据库产品。。。AdaptiveServerEnterprise(ASE)、SQLAnywhere、IQ、Advantage。您应该提供数据库产品的名称;提供这个版本也不会有什么坏处


假设您正在使用ASE,您可以使用转换(转换为数据类型、值、日期格式)来提供所需的输出,例如:

select getdate(),convert(varchar,getdate(),121)
go
 -------------------  -------------------
 Jun 11 2017  8:02PM  2017/06/11 20:02:38

我不知道有哪一个查询可以同时在Sybase(ASE)和Oracle中工作。

“我必须在这两种情况下都使用此查询(Oracle n Sybase=>我不能使用convert方法)”。Oracle和Sybase是不同的产品-没有通用的方法来实现您想要的功能,因此您需要对每个数据库进行单独的查询:Oracle中的to_char(…)和convert(…)在Sybase中。据我所知,如果我使用“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将在不同的平台上显示为“selectdatecolfromtable_name”;如果您想要一个在所有DBMS中工作相同的SQL,请不要在SQL查询中格式化日期,而是在应用程序中进行格式化。