1. SQL Server日期时间函数
在SQL Server中,提供了一系列的日期时间函数,用于处理日期时间类型的数据,例如:获取当前日期、将日期格式化等操作,下面主要介绍一些常用的日期时间函数:
1.1 GETDATE()函数
GETDATE()函数可以获取当前系统的日期时间,该函数不带参数。例如:
SELECT GETDATE();
执行结果:2021-11-03 22:45:10.790
1.2 DATEPART()函数
DATEPART函数用于获取日期时间中的具体部分,例如获取只获取年份、月份或日等,该函数包含两个参数,第一个参数为日期时间的部位,第二个参数为日期时间对象。例如:
SELECT DATEPART(YEAR, GETDATE());
SELECT DATEPART(MONTH, GETDATE());
SELECT DATEPART(DAY, GETDATE());
执行结果:
(No column name)
--------------------
2021
(No column name)
--------------------
11
(No column name)
--------------------
3
1.3 DATEDIFF()函数
DATEDIFF()函数用于计算两个日期之间的时间差,该函数包含三个参数,第一个参数为计算精度,第二个参数为起始日期,第三个为结束日期,例如:
DECLARE @start DATETIME, @end DATETIME;
SET @start = '2020-01-01';
SET @end = '2020-02-01';
SELECT DATEDIFF(DAY, @start, @end) AS Days;
执行结果:
Days
-----------
31
2. SQL Server查询今日数据
在业务数据处理中,经常需要查询当天或最近几天的数据信息,下面介绍几种查询今日数据的方法:
2.1 使用GETDATE()函数查询今日数据
使用GETDATE()函数结合日期函数可以查询今日数据信息,例如查询用户订单表中今天的订单信息,代码如下:
SELECT * FROM Orders WHERE DATEDIFF(DAY, OrderDate, GETDATE()) = 0;
该代码使用DATEDIFF函数计算OrderDate和当前日期之间差的天数,如果差值为0,则表示是今天的订单信息。
2.2 使用CAST()函数查询今日数据
使用CAST函数可以将日期类型数据转换为特定的字符串格式,从而方便进行查询,例如查询今天的订单信息:
SELECT * FROM Orders WHERE CAST(OrderDate AS DATE) = CAST(GETDATE() AS DATE);
该代码使用CAST函数将订单日期和当前日期转换为date类型,然后进行比较,如果两个日期相等则意味着是今天的订单信息。
3. SQL Server日期时间类型的转换
在数据库中,可能需要将不同类型的日期时间数据进行转换,例如将字符串类型的日期转换为日期类型、将日期类型转换为UNIX时间戳等操作。
3.1 使用CONVERT()函数进行转换
CONVERT()函数可以将日期时间类型进行格式转换,例如将日期类型转换为字符串类型,代码如下:
SELECT CONVERT(VARCHAR(10), OrderDate, 120) FROM Orders;
上述代码将订单日期转换为yyyy-MM-dd格式的字符串,其中120表示日期/时间的样式代码(style code)。
3.2 使用FORMAT()函数进行转换(仅限SQL Server 2012及以上)
SQL Server 2012及以上版本提供了FORMAT()函数,该函数可以按照指定的格式输出日期时间数据,例如将日期类型转换为'MMMM dd, yyyy'格式的字符串:
SELECT FORMAT(OrderDate, 'MMMM dd, yyyy') FROM Orders;
执行结果:
(No column name)
-----------------------------
January 01, 2021
January 02, 2021
January 03, 2021
January 04, 2021
...
4. SQL Server日期时间的运算
在SQL Server中,可以对日期时间数据进行加减操作,例如计算n天之后的日期、计算两个日期之间的天数等。
4.1 计算n天后的日期
可以使用DATEADD()函数计算某个日期n天之后的日期,例如计算今天之后10天的日期:
SELECT DATEADD(DAY, 10, GETDATE());
执行结果:
-----------------------
2021-11-13 22:45:10.790
4.2 计算两个日期之间的天数
可以使用DATEDIFF()函数计算两个日期之间的天数,例如计算从2020年1月1日到2020年2月1日的天数:
DECLARE @start DATETIME, @end DATETIME;
SET @start = '2020-01-01';
SET @end = '2020-02-01';
SELECT DATEDIFF(DAY, @start, @end) AS Days;
执行结果:
Days
-----------
31
总结
SQL Server提供了丰富的日期时间函数,可以方便地处理日期时间类型的数据。在查询今天的数据时,可以使用GETDATE()函数或CAST()函数实现,如果需要进行日期时间类型的转换,可以使用CONVERT()函数或FORMAT()函数,而在进行日期时间运算时,可以使用DATEDIFF()函数或DATEADD()函数等功能。