在 IT 行业工作了 20 年之后,我可以确定日期和时间非常难处理。幸运的是,现代关系数据库(例如 SQL Server)为此提供了许多非常有用的函数。在今天的文章中,我们将探索一些最常用的函数。
每种编程语言都需要一种获取当前日期和/或时间的方法。在 SQL Server 中,有两种方法可以通过 CURRENT_TIMESTAMP 和 GETDATE() 函数获取当前日期和时间。两者都以“YYYY-MM-DD hh:mm:ss.mmm”格式返回当前日期和时间:
那么,为什么要使用这两个函数呢?如你在上面的屏幕截图中所见,GETDATE() 需要括号,而 CURRENT_TIMESTAMP 则不需要括号。这使它非常适合设置审计字段的默认值,例如创建日期和最后修改日期列:
能够获取当前日期和时间是一回事,但是有时你需要解析各个日期部分。这就是 DATEPART() 函数的用处。它返回日期的指定部分作为整数值。这是它的语法:
DATEPART(interval, date)
interval(间隔)参数必须是特定的日期部分或缩写。例如,年可以表示为 year、yyyy 或 、yy 。这是完整列表:
以下查询将当前日期分为日、月和年组成部分:
日期或时间函数还可以帮助我们根据不同的数据构建日期。它接受年、月和日作为输入参数,并将它们组合起来以形成一个完整的日期:
DATEFROMPARTS(year, month, day)
以下是一个示例:
在日期上添加日期或时间间隔或从日期中减去日期或时间间隔是最常见的日期操作。在 SQL Server 中,执行此操作的函数是 DATEADD。它接受三个输入参数:要添加的间隔,数量以及将间隔应用到的日期:
DATEADD(interval, number, date)
DATEADD 接受的间隔与 DATEPART 的间隔相同,我们之前已经说过,因此在此不再赘述。取而代之,让我们看一下这个重要函数的几个示例。
我们的第一个示例将今天的日期增加了三个月:
若要减去间隔,只需提供一个负数参数:
我们的最后一个函数返回两个日期值之间的差异,以提供的间隔表示(请参见上文,以了解完整的接受值列表):
DATEDIFF(interval, date1, date2)
以下查询返回以月为单位的两个日期之间的差异:
通常将第一个日期视为较早的日期,因此,如果第二个日期参数在第一个日期之前,则 DATEDIFF 结果表示为负值:
在今天的文章中,我们介绍了一些最重要的 SQL Server 日期和时间函数。在下一期(也是最后一期)中,我们将研究其他函数。如果你对 Navicat for SQL Server 感兴趣,可以免费试用 14 天!