介绍
针对MSSQL数据库的日期操作非常方便,提供了大量的内建函数,可以很容易地对日期进行查询、分组和排序等。
在本篇文章中,将从入门到动手实践,带您深入了解MSSQL日期操作。文章将从以下几点展开:
日期时间数据类型
日期时间函数
日期时间格式化
日期时间比较
日期时间数据类型
在MSSQL中,日期时间数据类型主要有以下几种:
DATETIME:存储日期和时间的组合,占用8个字节,精确到1/300秒
SMALLDATETIME:精度比DATETIME低,占用4个字节,精确到分钟
DATE:存储日期,占用3个字节
TIME:存储时间,占用3~5个字节,精确到纳秒
DATETIME2:存储日期和时间的组合,精度高于DATETIME,最高可以精确到100纳秒。
创建日期时间类型列
在SQL Server中,可以使用以下语法创建一个包含日期时间类型列的表:
CREATE TABLE [dbo].[mytable](
[id] [int] IDENTITY(1,1) NOT NULL,
[title] [nvarchar](50) NULL,
[created_time] [datetime] NOT NULL,
[modified_time] [datetime] NULL,
CONSTRAINT [PK_mytable] PRIMARY KEY CLUSTERED ([id] ASC)
) ON [PRIMARY]
GO
在上面的示例中,创建了一个名为mytable的表,包含id、title、created_time和modified_time四个列。其中,created_time和modified_time都是datetime类型。
日期时间函数
MSSQL数据库提供了大量的日期函数,使得我们可以对日期数据进行处理。下面介绍几个常用的日期函数:
1. GETDATE()
GETDATE()函数用于获取当前系统日期和时间,返回一个datetime类型的值。
SELECT GETDATE() AS CurrentDateTime
输出结果:
-----------------------
CurrentDateTime
-----------------------
2022-02-22 14:24:51.187
2. DATEADD()
DATEADD()函数用于将某个时间加上一个指定的时间间隔,返回一个datetime类型的值。
DATEADD()函数有三个参数:
interval:时间间隔,比如year、month、day、hour等等
number:时间间隔数量
date:日期参数
下面的示例演示了如何在当前日期上加上7天:
SELECT DATEADD(day, 7, GETDATE()) AS AddedDateTime
输出结果:
-----------------------
AddedDateTime
-----------------------
2022-03-01 14:27:27.503
3. DATEDIFF()
DATEDIFF()函数用于计算两个日期之间的差值。它返回一个整数,表示第一个日期和第二个日期之间的间隔。
DATEDIFF()函数有三个参数:
interval:时间间隔,比如year、month、day、hour等等
firstdate:第一个日期
seconddate:第二个日期
下面的示例演示了如何计算两个日期之间的天数:
SELECT DATEDIFF(day, '2022-02-20', '2022-02-28') AS DayDifference
输出结果:
------------------
DayDifference
------------------
8
日期时间格式化
MSSQL数据库中,我们可以使用CONVERT和FORMAT函数来对日期时间数据进行格式化。
1. CONVERT()
CONVERT函数能够将一个日期时间值从一种格式转换成另一种格式。它的语法如下:
CONVERT(data_type(length), expression, style)
其中data_type(length)表示返回的数据类型和长度。style的值为一个整数,表示输入表达式的格式。
下面是一个将日期时间格式从datetime类型转换成varchar类型,并指定字符串格式的示例:
SELECT CONVERT(varchar(20), GETDATE(), 120) AS ConvertedDateTime
输出结果:
-----------------------
ConvertedDateTime
-----------------------
2022-02-22 14:32:26
2. FORMAT()
FORMAT函数用于格式化日期和时间参数。对于日期和时间类型的数据,可以根据要求指定对应的转换格式,得到所需的数据格式。
下面是一个将日期时间格式化为yyyy-MM-dd格式的示例:
SELECT FORMAT(GETDATE(), 'yyyy-MM-dd') AS FormattedDateTime
输出结果:
-----------------
FormattedDateTime
-----------------
2022-02-22
日期时间比较
MSSQL中,可以使用比较运算符对日期时间类型的值进行比较,如:=、>、<、>=、<=。
下面的示例展示了如何根据日期时间类型的值进行比较:
SELECT * FROM mytable WHERE created_time >= '2022-01-01'
输出结果:
id title created_time modified_time
--------------------------------------------------
1 Title1 2022-01-01 10:00:00.000 NULL
2 Title2 2022-01-02 14:30:00.000 NULL
3 Title3 2022-02-01 09:15:00.000 NULL
4 Title4 2022-02-22 08:45:00.000 NULL
总结
本篇文章从日期时间数据类型、日期时间函数、日期时间格式化和日期时间比较等方面对MSSQL日期操作进行了全面的介绍。读完本文,您应该能够熟练地使用MSSQL内建函数对日期数据进行操作了。