Sybase在Oracle中的等价物

时间:2011-03-29 17:49:41

标签: oracle sybase

我正在将代码从Sybase更改为Oracle。 我在将以下查询转换为oracle时遇到问题。

Select Custodian_addr,convert(datetime,dateadd(ss,CreateDT,"01/01/1970")

此处CreateDT是列名,其值例如为1015015173 日期转换的结果(对于此示例)是2002年3月1日格林威治标准时间下午8:39

我研究并找到了导致错误的oracle替代方案

Select Custodian_addr,to_char(CreateDT,"SS")

我在Oracle中遇到查询错误。我无法识别错误。由于我在Perl中执行此操作["]必须转义或可能是什么问题?请建议我一个解决方案

2 个答案:

答案 0 :(得分:1)

SELECT 'some address' as custodian_addr, 
  date '1970-01-01' + 1015015173/86400 as create_dt
 from dual
/

CUSTODIAN_AD CREATE_DT
------------ -------------------
some address 2002-03-01 20:39:33

Oracle日期算术非常简单 - 将日期加1会使其增加1天。因此,由于该数字为秒,将其除以86400(60 * 60 * 24),将该数字转换为天数(及其分数)。

答案 1 :(得分:0)

你得到的错误是什么?

您的TO_CHAR函数不应使用双引号。它必须是

TO_CHAR(CreateDT,'SS')

如果在Oracle中用双引号括起来,它会被解释为标识符,而不是字符串常量。