将 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但是现在不知道怎么实现 dateadddatepart

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的主要内容,如果未能解决你的问题,请参考以下文章

sql 中Dateadd()函数的用法

sql server Dateadd()函数

日期函数

SQL-日期函数

postgresQL查询:周开始和结束日期

在 Hive 中将分钟添加到日期时间