【问题标题】:find the difference between two date values in Sybase database在 Sybase 数据库中查找两个日期值之间的差异
【发布时间】:2014-01-26 01:58:06
【问题描述】:

我知道sybase iq中有一些函数days(),但在sybase ase中,我认为我们只有日期部分选项来获取两天之间的天数。

我的要求是我想要两天之间的天数而不比较两天之间的月份或年份。

任何帮助表示赞赏!

【问题讨论】:

    标签: sap-ase


    【解决方案1】:

    使用datediff函数:

    说明

    计算两个指定日期或时间之间的日期部分数。

    语法

    datediff(datepart, {date, date | time, time | bigtime, bigtime | datetime, datetime | bigdatetime, bigdatetime}]) 参数

    日期部分 是日期部分或缩写。有关 Adaptive Server 识别的日期部分和缩写的列表,请参见 Transact-SQL 用户指南。

    日期表达式1 是 datetime、smalldatetime、bigdatetime、bigtime、date、time 或 datetime 格式的字符串类型的表达式。

    日期表达式2 是 datetime、smalldatetime、bigdatetime、bigtime、date、time 或 datetime 格式的字符串类型的表达式。

    示例 6

    求两次之间的天数:

    declare @a time
    declare @b time
    select @a = "20:43:22"
    select @b = "10:43:22"
    select datediff(dd, @a, @b)
    -----------
         0
    

    【讨论】:

    • 警告词 - 至少在 ASE 15.7 中,使用 datepart 表示年份 (yy) 时,datediff() 函数无法正常工作。具体来说,虽然 datediff(mm, '12/30/2018', '1/2/2019') 将正确返回 0,但 datediff(yy, '12/30/2018', '1/2/2019') 将返回1. 看来如果 datepart 设置为 yy,该函数只比较两个日期的年份部分,而忽略其余部分。 (文档指出,如果差异是小数,则应截断结果,这适用于其他日期部分,但不适用于 yy。)
    猜你喜欢
    • 2015-03-24
    • 1970-01-01
    • 2018-02-26
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 2013-10-28
    • 1970-01-01
    相关资源
    最近更新 更多