MSSQL日期格式解读

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开发中,合理使用日期类型和日期函数,可以帮助我们更方便地处理日期相关的业务逻辑。

数据库标签