将 dateadd 和 datepart 从 sybase 迁移到 oracle
Posted
技术标签:
【中文标题】将 dateadd 和 datepart 从 sybase 迁移到 oracle【英文标题】:migrate dateadd and datepart from sybase to oracle 【发布时间】:2022-01-02 01:28:02 【问题描述】:我试过把这句话sql从sybase迁移到oracle但是现在不知道怎么实现
dateadd
和 datepart
。
select @v_date = convert(char,convert(char(4),datepart(year, dateadd(month, -13, getdate()))) + "/" +
right(( "00" + convert(varchar(2), datepart(month, dateadd(month, -13, getdate())))) , 2) + "/01", 112)
我已经搜索并知道 Oracle 使用 interval
,但我仍然不明白如何。
【问题讨论】:
如果您解释一下该语句在 Sysbase 中的作用,将会很有帮助。就像您不了解 Oracle SQL 一样,大多数了解 Oracle 的人都不熟悉 Sysbase。这在日期算术的情况下尤其重要,因为这是每个 RDBMS 风格都发明了自己的函数名称和约定的领域。 背景:getdate()
返回当前日期和时间为数据类型datetime
;各种功能正在将当前日期和时间切割成某种所需的格式;我建议用select convert(varchar(30),getdate(),109)
和select @v_date
的输出更新问题;这将为我们提供当前日期和时间以及最终输出;从此某人(具有 Oracle 知识)应该能够提出等效查询
【参考方案1】:
我不是 Sybase 人员,但我正在根据代码假设您希望 13 个月前的月初。
在这种情况下,它的:
SQL> select trunc(add_months(sysdate,-13),'MM') from dual;
TRUNC(ADD
---------
01-OCT-20
【讨论】:
以上是关于将 dateadd 和 datepart 从 sybase 迁移到 oracle的主要内容,如果未能解决你的问题,请参考以下文章