1. SQL Server中日期函数
在SQL Server中,日期是我们经常使用的数据类型之一。SQL Server提供了许多函数来处理日期,包括获取当前日期和时间、增加或减少指定日期中的天数、月数或年数、获取指定日期的星期几等等。下面我们将介绍一些常用的日期函数。
1.1 获取当前日期和时间
在SQL Server中,我们可以使用GETDATE()函数来获取当前日期和时间。
SELECT GETDATE()
注意:GETDATE()函数返回的日期时间格式为datetime2类型,如果需要只返回日期部分,可以使用CONVERT()函数或者CAST()函数来将datetime2类型转换为date类型。
1.2 增加或减少日期中的天数、月数或年数
在SQL Server中,我们可以使用DATEADD()函数来增加或减少指定日期中的天数、月数或年数。
-- 增加1天
SELECT DATEADD(DAY, 1, '2022-01-01')
-- 减少1个月
SELECT DATEADD(MONTH, -1, '2022-01-01')
-- 增加2年
SELECT DATEADD(YEAR, 2, '2022-01-01')
1.3 获取指定日期的星期几
在SQL Server中,我们可以使用DATEPART()函数来获取指定日期的星期几。DATEPART()函数返回一个整数值,表示指定日期的星期几,其中1表示星期日,2表示星期一,以此类推。
SELECT DATEPART(WEEKDAY, '2022-01-01')
2. 今天的日期
在日常开发中,我们经常需要获取今天的日期。SQL Server中,我们可以使用GETDATE()函数来获取当前日期和时间,并使用CONVERT()函数将datetime2类型转换为date类型,从而获取今天的日期。
SELECT CONVERT(DATE, GETDATE())
注意:需要注意时区的影响,如果需要获取的是本地时间的今天日期,需要考虑本地时区与UTC时区之间的时差。
3. 日期格式化
在SQL Server中,我们可以使用CONVERT()函数或FORMAT()函数来将日期格式化。
3.1 使用CONVERT()函数格式化日期
使用CONVERT()函数可以将datetime2类型转换为指定的字符串格式。其中第一个参数指定日期格式,第二个参数指定需要格式化的日期。
SELECT CONVERT(NVARCHAR(10), GETDATE(), 120) AS [日期格式]
上面的代码将当前日期转换为了年月日格式的字符串。
3.2 使用FORMAT()函数格式化日期
FORMAT()函数可以将日期格式化为指定的字符串格式,使用方法与CONVERT()函数类似。
SELECT FORMAT(GETDATE(), 'yyyy-MM-dd') AS [日期格式];
注意:FORMAT()函数在SQL Server 2012及以上版本中提供,早期版本不支持该函数。
4. 日期比较
在SQL Server中,我们可以使用比较运算符(>、<、=、>=、<=)来比较日期。比较日期时,如果直接使用字符串进行比较,可能会得到不正确的结果,所以需要将字符串转换为日期类型进行比较。
-- 返回startDate与endDate之间的所有日期
DECLARE @startDate DATE ='2022-01-01'
DECLARE @endDate DATE ='2022-01-31'
SELECT [日期] = CONVERT(NVARCHAR(10), d, 120)
FROM (
SELECT DATEADD(DAY, rn-1, @startDate) AS d
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY o.object_id) AS rn
FROM sys.objects o
CROSS JOIN sys.objects) x
WHERE x.rn <= DATEDIFF(DAY, @startDate, @endDate) + 1
) y
WHERE y.d BETWEEN @startDate AND @endDate
上面的代码演示了如何返回指定起止日期之间的所有日期。
5. 总结
日期管理是SQL Server开发的重要内容之一,在日常开发中经常会和日期打交道。本文介绍了SQL Server中常用的日期函数,包括获取当前日期和时间、增加或减少指定日期中的天数、月数或年数、获取指定日期的星期几等等。同时,我们还介绍了如何获取今天的日期和如何对日期进行格式化和比较,希望对读者有所帮助。