使用 SQL Server (Transact-SQL) 日期数据类型时,在数据库上执行不同操作时了解日期格式至关重要。请注意,在数据库中创建新表时必须选择列的数据类型。

SQL Server (Transact-SQL) 中可用于存储日期或日期/时间值的不同数据类型下面提到:

数据类型说明
DATETIME日期和时间组合。 格式:"YYYY-MM-DD hh:mm:ss[.mmm]"。 它支持的范围从 1753 年 1 月 1 日到 9999 年 12 月 31 日,精度为 3.33 毫秒。
DATETIME2日期和时间组合。 格式:"YYYY-MM-DD hh:mm:ss[.mmm]"。 它支持的范围从 0001 年 1 月 1 日到 9999 年 12 月 31 日,精度为 100 纳秒。
DATE日期。 格式:"年-月-日"。 支持范围从 0001 年 1 月 1 日到 9999 年 12 月 31 日。
TIME时间。 格式:"YYYY-MM-DD hh:mm:ss[.nnnnnnn]"。 用于存储时间,精度仅为 100 纳秒。 值范围从"00:00:00.0000000"到"23:59:59.9999999"。
DATETIMEOFFSET日期和时间组合并添加时区 基于 UTC(通用时间坐标或格林威治标准时间)的意识。 格式:"YYYY-MM-DD hh:mm:ss[.nnnnnnn]"[{+|-}hh:mm]。 它支持的范围从 0001 年 1 月 1 日到 9999 年 12 月 31 日,精度为 100 纳秒。
SMALLDATETIME日期和时间组合。 格式:"YYYY-MM-DD hh:mm:ss"。 支持范围从1900年1月1日到2079年6月6日,精度为1分钟。

示例:创建一个日期数据类型的表

下面提到的语句创建一个名为Employee的表,其中包含五个列:EmpID、姓名、城市、年龄和加入日期。

CREATE TABLE Employee (
  EmpID INT NOT NULL,
  Name VARCHAR(255) NOT NULL,
  City VARCHAR(100),
  Age INT,
  Date_of_Joining DATE
); 

这将创建一个名为 Employee 的空表,其中包含五列。

示例:使用日期数据类型

考虑名为 Employee 的数据库表,包含以下记录:

EmpIDNameCityAgeDate_of_Joining
1JohnLondon252019-05-25
2MarryNew York242018-10-15
3JoParis272017-06-09
4KimAmsterdam302014-04-21
5RameshNew Delhi282019-05-25
6HuangBeijing282020-01-10

获取 Employee 表中加入该组织的所有员工的数据在"2019-05-25",查询为:

SELECT * FROM Employee
WHERE Date_of_Joining = '2019-05-25'; 

这将产生如下所示的结果:

EmpIDNameCityAgeDate_of_Joining
1JohnLondon252019-05-25
5RameshNew Delhi282019-05-25

完整的 SQL Server 日期和时间参考

有关所有 SQL Server 日期和时间函数的完整参考,请参阅 SQL Server 数据和时间参考.