SQL Server DateTime 取日期

在 SQL Server 中,日期和时间都可以使用 DateTime 数据类型来存储。DateTime 数据类型包含了日期和时间的信息,可以通过不同的函数和操作符来提取其中的日期部分。

本文将介绍如何在 SQL Server 中取出 DateTime 数据类型中的日期,并提供相应的代码示例。

1. 使用 CAST 函数

在 SQL Server 中,可以使用 CAST 函数将 DateTime 转换为 Date 数据类型,从而只保留日期部分,丢弃时间部分。

SELECT CAST(GETDATE() AS DATE) AS DateOnly;

上述代码中,GETDATE() 函数返回当前日期和时间,然后通过 CAST 函数将其转换为只包含日期的 Date 数据类型。

2. 使用 CONVERT 函数

另一种常用的方法是使用 CONVERT 函数来将 DateTime 转换为日期。与 CAST 函数类似,CONVERT 函数也可以指定目标数据类型。

SELECT CONVERT(DATE, GETDATE()) AS DateOnly;

上述代码中,GETDATE() 函数返回当前日期和时间,然后通过 CONVERT 函数将其转换为只包含日期的 Date 数据类型。

3. 使用 DATEADD 函数

除了通过转换函数,还可以使用 DATEADD 函数来增加或减少 DateTime 中的时间部分,从而获取日期部分。

SELECT DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0) AS DateOnly;

上述代码中,DATEDIFF(dd, 0, GETDATE()) 函数返回当前日期距离 1900 年 1 月 1 日的天数差,然后通过 DATEADD 函数将这个差值加回到 1900 年 1 月 1 日,从而得到只包含日期的结果。

4. 使用 DATEPART 函数

DATEPART 函数可以提取 DateTime 数据类型中的各个部分,包括年、月、日等。通过提取年、月、日等部分,可以获取日期部分。

SELECT DATEPART(YEAR, GETDATE()) AS Year,
       DATEPART(MONTH, GETDATE()) AS Month,
       DATEPART(DAY, GETDATE()) AS Day;

上述代码中,DATEPART(YEAR, GETDATE()) 函数返回当前日期的年份,DATEPART(MONTH, GETDATE()) 函数返回当前日期的月份,DATEPART(DAY, GETDATE()) 函数返回当前日期的天数。

5. 示例

下面的代码示例演示了如何在 SQL Server 中取出 DateTime 数据类型中的日期:

DECLARE @DateTimeValue DATETIME = GETDATE();

SELECT 'DateTime Value', @DateTimeValue AS Value;
SELECT 'Date Only (CAST)', CAST(@DateTimeValue AS DATE) AS Value;
SELECT 'Date Only (CONVERT)', CONVERT(DATE, @DateTimeValue) AS Value;
SELECT 'Date Only (DATEADD)', DATEADD(dd, DATEDIFF(dd, 0, @DateTimeValue), 0) AS Value;
SELECT 'Year', DATEPART(YEAR, @DateTimeValue) AS Value;
SELECT 'Month', DATEPART(MONTH, @DateTimeValue) AS Value;
SELECT 'Day', DATEPART(DAY, @DateTimeValue) AS Value;

在上述代码中,首先声明一个 DateTime 变量 @DateTimeValue,并赋值为当前日期和时间。然后通过不同的方法提取日期部分,并输出结果。

结论

通过使用 CAST 函数、CONVERT 函数、DATEADD 函数和 DATEPART 函数,我们可以在 SQL Server 中轻松地取出 DateTime 数据类型中的日期部分。根据具体的需求,可以选择适合的方法来实现。

希望本文能够帮助读者更好地理解如何在 SQL Server 中取出日期部分,并应用到实际的开发中。

参考链接

  • [CAST and CONVERT (Transact-SQL)](
  • [DATEADD (Transact-SQL)](
  • [DATEPART (Transact-SQL)](