1. MSSQL日期类型
在MSSQL中,日期类型主要包含以下几种:
1.1 datetime
datetime数据类型在MSSQL中用于存储日期和时间的组合。其存储范围为“1753/1/1 00:00:00”到“9999/12/31 23:59:59”,精度为3.33毫秒。
CREATE TABLE example (
id INT PRIMARY KEY,
example_time DATETIME
);
INSERT INTO example (id, example_time)
VALUES (1, '2021-09-30 19:20:30.123');
1.2 date
date数据类型在MSSQL中用于存储日期。其存储范围为“0001/1/1”到“9999/12/31”。
CREATE TABLE example (
id INT PRIMARY KEY,
example_date DATE
);
INSERT INTO example (id, example_date)
VALUES (1, '2021-09-30');
1.3 time
time数据类型在MSSQL中用于存储时间。其存储范围为“00:00:00.0000000”到“23:59:59.9999999”,精度为100纳秒。
CREATE TABLE example (
id INT PRIMARY KEY,
example_time TIME(0)
);
INSERT INTO example (id, example_time)
VALUES (1, '19:20:30');
2. MSSQL日期格式化
为了将日期格式化为我们需要的格式,MSSQL提供了多个转换函数。
2.1 CONVERT
CONVERT函数可以将日期或时间等数据类型转换为字符类型,并且可以通过提供转换码(code)来实现格式化。
以下是一些常用的转换码:
yyyy: 四位年份
yy: 两位年份
mm: 两位月份
m: 一位或两位月份
dd: 两位日期
d: 一位或两位日期
hh: 两位小时(24小时制)
h: 一位或两位小时(24小时制)
mi: 两位分钟
n: 分钟
ss: 两位秒钟
s: 秒钟
am/pm: 上午/下午(仅用于12小时制)
以下是一些示例:
SELECT CONVERT(VARCHAR(10), GETDATE(), 120); -- 以yyyy-mm-dd的格式返回当前日期
SELECT CONVERT(VARCHAR(8), GETDATE(), 108); -- 以hh:mi:ss的格式返回当前时间
SELECT CONVERT(VARCHAR(19), GETDATE(), 121); -- 以yyyy-mm-dd hh:mi:ss的格式返回当前日期和时间
SELECT CONVERT(VARCHAR(30), GETDATE(), 131); -- 以yyyy-mm-dd hh:mi:ss.mmm(毫秒)的格式返回当前日期和时间
SELECT CONVERT(VARCHAR(20), GETDATE(), 22); -- 以mm/dd/yyyy hh:mi:ss AM/PM的格式返回当前日期和时间,12小时制
2.2 FORMAT
FORMAT函数可以将日期或时间等数据类型转换为字符类型,并且可以通过提供格式字符串来实现格式化。
以下是一些常用的格式字符串:
yyyy: 四位年份
yy: 两位年份
MM: 两位月份(01-12)
M: 一位或两位月份
dd: 两位日期(01-31)
d: 一位或两位日期
HH: 两位小时(24小时制)
H: 一位或两位小时(24小时制)
mm: 两位分钟(00-59)
m: 一位或两位分钟
ss: 两位秒钟(00-59)
s: 秒钟
以下是一些示例:
SELECT FORMAT(GETDATE(), 'yyyy-MM-dd'); -- 以yyyy-mm-dd的格式返回当前日期
SELECT FORMAT(GETDATE(), 'HH:mm:ss'); -- 以hh:mm:ss的格式返回当前时间
SELECT FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm:ss'); -- 以yyyy-mm-dd hh:mi:ss的格式返回当前日期和时间
3. MSSQL日期比较
MSSQL中可以使用比较运算符(如<、>)来比较日期类型的值。如果两个日期类型的值可以进行比较,则比较运算符会返回一个逻辑值(TRUE或FALSE)。
例如:
DECLARE @date1 DATE = '2021-09-30', @date2 DATE = '2021-10-01';
SELECT CASE WHEN @date1 < @date2 THEN 1 ELSE 0 END; -- 返回1
除了比较日期类型的值外,MSSQL还提供了一些函数来对日期进行比较,如DATEDIFF和DATEADD函数。
3.1 DATEDIFF
DATEDIFF函数用于计算两个日期之间的时间间隔,返回一个整数值。
以下是一些示例:
SELECT DATEDIFF(day, '2021-09-30', '2021-10-01'); -- 返回1,表示两个日期之间相差1天
SELECT DATEDIFF(minute, '2021-09-30 20:00:00', '2021-09-30 21:00:00'); -- 返回60,表示两个日期之间相差60分钟
3.2 DATEADD
DATEADD函数用于在日期上添加或减去一个时间间隔,并返回一个新的日期值。
以下是一些示例:
SELECT DATEADD(day, 1, '2021-09-30'); -- 返回'2021-10-01',表示在'2021-09-30'的基础上添加1天
SELECT DATEADD(minute, 60, '2021-09-30 20:00:00'); -- 返回'2021-09-30 21:00:00',表示在'2021-09-30 20:00:00'的基础上添加60分钟
4. 结论
通过本文的介绍,我们可以了解MSSQL日期类型、日期格式化和日期比较等方面的内容。在MSSQL开发中,合理使用日期类型和日期函数,可以帮助我们更方便地处理日期相关的业务逻辑。