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





相关文章
|
3天前
|
SQL 开发框架 .NET
sql server日期时间函数
sql server日期时间函数
14 2
|
2月前
|
SQL 数据库
|
1月前
|
SQL 关系型数据库 C语言
PostgreSQL SQL扩展 ---- C语言函数(三)
可以用C(或者与C兼容,比如C++)语言编写用户自定义函数(User-defined functions)。这些函数被编译到动态可加载目标文件(也称为共享库)中并被守护进程加载到服务中。“C语言函数”与“内部函数”的区别就在于动态加载这个特性,二者的实际编码约定本质上是相同的(因此,标准的内部函数库为用户自定义C语言函数提供了丰富的示例代码)
|
2月前
|
SQL 数据采集 数据处理
如何在 SQL Server 中使用 LEN 函数
【8月更文挑战第9天】
118 1
如何在 SQL Server 中使用 LEN 函数
|
2月前
|
SQL 数据处理 数据库
SQL中的函数有哪些类型
【8月更文挑战第20天】SQL中的函数有哪些类型
21 1
|
2月前
|
SQL 监控 索引
如何在 SQL Server 中使用 `PATINDEX` 函数
【8月更文挑战第8天】
269 9
|
2月前
|
SQL 关系型数据库 MySQL
如何在 SQL Server 中使用 `REPLACE` 函数
【8月更文挑战第8天】
558 9
|
2月前
|
SQL 数据处理 数据库
|
2月前
|
Java 应用服务中间件 Maven
从零到英雄:一步步构建你的首个 JSF 应用程序,揭开 JavaServer Faces 的神秘面纱
【8月更文挑战第31天】JavaServer Faces (JSF) 是一种强大的 Java EE 标准,用于构建企业级 Web 应用。它提供了丰富的组件库和声明式页面描述语言 Facelets,便于开发者快速开发功能完善且易于维护的 Web 应用。本文将指导你从零开始构建一个简单的 JSF 应用,包括环境搭建、依赖配置、Managed Bean 编写及 Facelets 页面设计。
74 0
|
2月前
|
SQL Oracle 关系型数据库
SQL 中的大小写处理函数详解
【8月更文挑战第31天】
66 0