我正在将代码从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中执行此操作["
]必须转义或可能是什么问题?请建议我一个解决方案
答案 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中用双引号括起来,它会被解释为标识符,而不是字符串常量。