SQL中的高级日期函数(上)

简介: 我们在工作中时常需要处理某个时间段的数据,例如:如何求解上周的销量?如何求解上月第一天的销售金额?如何求解去年同期的在线人数?......这些都是涉及到具体或者以当前为参照的时间段的数据。 我们该如何从海量数据中找出准确的时间段呢?

平常我们在计算时间或推算日期时都会用到一些日期函数,大多都是些比较常见的,比如YEAR(),MONTH(),DATEADD()等等,今天给大家讲解一些比较高级的日期函数。


测试环境

SQL Server 2017

@@DATEFIRST

作用

针对特定会话,此函数返回 SET DATEFIRST 的当前值。


语法

@@DATEFIRST


注意:SET DATEFIRST n 指定一周的第一天(星期日、星期一、星期二等) 。 n 值的范围为 1 到 7 。


示例

比如我们指定星期天为每周第一天,那么今天(2021-12-08)的

@@DATEFIRST就会返回1。

具体如下:


SET DATEFIRST 1; --表示星期一为每周第一天
SELECT @@DATEFIRST; --返回DATEFIRST的值


结果:

35.jpg

这个函数的可能很多人觉得作用不大,其实对设置每周的第一天是很重要的。美国是把每周的星球日当第一天,而我国通常把星期一当为每周的第一天。

比如我想知道上周第3天的销量,你就需要先定义上周的星期几是第1天,才能进一步计算第3天的销量。



系统时间

获取系统时间有一组函数,常见的有GETDATE函数,此外还有这些函数。

SELECT SYSDATETIME()
SELECT SYSDATETIMEOFFSET()
SELECT SYSUTCDATETIME()
SELECT CURRENT_TIMESTAMP  
SELECT GETDATE()
SELECT GETUTCDATE()


结果:


36.jpg

其中包含UTC的系统时间是世界标准时间,其他为当前时区时间。注意:CURRENT_TIMESTAMP与GETDATE()函数等价。


DATEADD

作用

将指定的 number 值(作为带符号整数)与输入 date 值的指定 datepart 相加,然后返回该修改值 。

语法

DATEADD (datepart , number , date )

其中datepart参数由系统定义,具体参数列表如下:

datepart 缩写
yy, yyyy
季度 qq, q
mm, m
年中的日 dy, y
dd, d
wk, ww
星期 dw, w
小时 hh
分钟 mi, n
ss, s
毫秒 ms
微妙 mcs
纳秒 ns





相关文章
|
2月前
|
SQL 数据库
SQL FORMAT() 函数
SQL FORMAT() 函数
40 2
|
14天前
|
SQL 索引
在 SQL Server 中使用 STRING_AGG 函数
【8月更文挑战第5天】
160 2
在 SQL Server 中使用 STRING_AGG 函数
|
11天前
|
SQL 数据库
|
14天前
|
SQL 缓存 BI
在 SQL Server 中使用 SPACE 函数
【8月更文挑战第5天】
39 6
在 SQL Server 中使用 SPACE 函数
|
10天前
|
SQL 数据采集 数据处理
如何在 SQL Server 中使用 LEN 函数
【8月更文挑战第9天】
31 1
如何在 SQL Server 中使用 LEN 函数
|
14天前
|
SQL 数据格式
在 SQL Server 中使用 STR 函数
【8月更文挑战第5天】
58 3
在 SQL Server 中使用 STR 函数
|
11天前
|
SQL 监控 索引
如何在 SQL Server 中使用 `PATINDEX` 函数
【8月更文挑战第8天】
81 9
|
11天前
|
SQL 关系型数据库 MySQL
如何在 SQL Server 中使用 `REPLACE` 函数
【8月更文挑战第8天】
100 9
|
24天前
|
SQL 数据挖掘 数据处理
SQL中有哪些常用的函数?
【7月更文挑战第27天】SQL中有哪些常用的函数?
14 4
|
26天前
|
SQL 数据处理 数据库
SQL函数
【7月更文挑战第24天】SQL函数
15 2