• 重要的 SQL Server 函数 - 日期函数


    第 3 部分:日期函数

    在 IT 行业工作了 20 年之后,我可以确定日期和时间非常难处理。幸运的是,现代关系数据库(例如 SQL Server)为此提供了许多非常有用的函数。在今天的文章中,我们将探索一些最常用的函数。

    获取当前日期和时间

    每种编程语言都需要一种获取当前日期和/或时间的方法。在 SQL Server 中,有两种方法可以通过 CURRENT_TIMESTAMP 和 GETDATE() 函数获取当前日期和时间。两者都以“YYYY-MM-DD hh:mm:ss.mmm”格式返回当前日期和时间:

    那么,为什么要使用这两个函数呢?如你在上面的屏幕截图中所见,GETDATE() 需要括号,而 CURRENT_TIMESTAMP 则不需要括号。这使它非常适合设置审计字段的默认值,例如创建日期和最后修改日期列:

    DATEPART

    能够获取当前日期和时间是一回事,但是有时你需要解析各个日期部分。这就是 DATEPART() 函数的用处。它返回日期的指定部分作为整数值。这是它的语法:

    DATEPART(interval, date)
    

    interval(间隔)参数必须是特定的日期部分或缩写。例如,年可以表示为 yearyyyy 或 、yy 。这是完整列表:

    • year, yyyy, yy = 年
    • quarter, qq, q = 季
    • month, mm, m = 月
    • dayofyear, dy, y = 一年中的某一天
    • day, dd, d = 一个月中的某一天
    • week, ww, wk = 周
    • weekday, dw, w = 平日
    • hour, hh = 小时
    • minute, mi, n = 分
    • second, ss, s = 秒
    • millisecond, ms = 毫秒

    以下查询将当前日期分为日、月和年组成部分:

    DATEFROMPARTS

    日期或时间函数还可以帮助我们根据不同的数据构建日期。它接受年、月和日作为输入参数,并将它们组合起来以形成一个完整的日期:

    DATEFROMPARTS(year, month, day)
    

    以下是一个示例:

    DATEADD

    在日期上添加日期或时间间隔或从日期中减去日期或时间间隔是最常见的日期操作。在 SQL Server 中,执行此操作的函数是 DATEADD。它接受三个输入参数:要添加的间隔,数量以及将间隔应用到的日期:

    DATEADD(interval, number, date)
    

    DATEADD 接受的间隔与 DATEPART 的间隔相同,我们之前已经说过,因此在此不再赘述。取而代之,让我们看一下这个重要函数的几个示例。

    我们的第一个示例将今天的日期增加了三个月:

    若要减去间隔,只需提供一个负数参数:

    DATEDIFF

    我们的最后一个函数返回两个日期值之间的差异,以提供的间隔表示(请参见上文,以了解完整的接受值列表):

    DATEDIFF(interval, date1, date2)
    

    以下查询返回以月为单位的两个日期之间的差异:

    通常将第一个日期视为较早的日期,因此,如果第二个日期参数在第一个日期之前,则 DATEDIFF 结果表示为负值:

    总结

    在今天的文章中,我们介绍了一些最重要的 SQL Server 日期和时间函数。在下一期(也是最后一期)中,我们将研究其他函数。如果你对 Navicat for SQL Server 感兴趣,可以免费试用 14 天!

    往期回顾

    Navicat 被投毒了 | 真相来了!

    盗版引发设备瘫痪

    Navicat 16.1 为OceanBase 社区版

    Navicat 成为信通院数据库创新实验室成员

    Navicat 学术伙伴计划 - 免费教育版申请

    Navicat 技术智库 - 实战演练与各类热门问题解答

    免费试用攻略 | Navciat 16 数据库管理工具

  • 相关阅读:
    rust 笔记 高级错误处理
    8、Linux:一起玩转压缩/解压命令2
    CSS必学:你需要知道的盒子模型的秘密
    centos7安装mysql5.7
    Open3D C++文章目录汇总
    自动驾驶系统中摄像头相对地面的在线标定
    Tomcat 架构
    echarts图 横向滚动条
    Java中线程的状态及切换
    展锐S 上微距模式不识别问题跟进 --- sensor_config的解析
  • 原文地址:https://blog.csdn.net/weixin_53935287/article/details/126018129