SQL MS SQL 只提取日期不包含时间
在本文中,我们将介绍如何在 MS SQL 数据库中提取只包含日期而不包含时间的值。
阅读更多:SQL 教程
1. 使用CAST函数
在 MS SQL 中,我们可以使用 CAST 函数来将 datetime 数据类型转换为 date 数据类型,从而仅提取日期。
SELECT CAST(GETDATE() AS date) AS DateOnly;
上述示例将返回当前日期的值,而不包含时间部分。
2. 使用CONVERT函数
除了使用 CAST 函数,我们还可以使用 CONVERT 函数来将 datetime 数据类型转换为 date 数据类型。
SELECT CONVERT(date, GETDATE()) AS DateOnly;
与 CAST 函数相比,CONVERT 函数的语法稍有不同,但功能相同,都能够提取日期而不包含时间。
3. 使用DATE函数
在 MS SQL 2012 及以上版本中,我们还可以使用 DATE 函数来提取只包含日期的值。
SELECT DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), DAY(GETDATE())) AS DateOnly;
DATEFROMPARTS 函数接受年、月和日作为参数,并返回一个只包含日期而不包含时间的值。
4. 使用格式化字符串
另一种方法是使用格式化字符串来只返回日期部分。
SELECT CONVERT(varchar, GETDATE(), 101) AS DateOnly;
上述示例中的“101”是格式化字符串,用于指示只返回日期部分。
5. 使用DATEADD函数
如果我们想要在 MS SQL 中从一个带有时间的 datetime 值中提取日期,我们可以使用 DATEADD 函数将时间部分减去。
SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0) AS DateOnly;
上述示例使用了 DATEADD 函数和 DATEDIFF 函数。它们的组合可以将时间部分置为零,从而只返回日期部分。
总结
通过使用 CAST 函数、CONVERT 函数、DATE 函数、格式化字符串以及 DATEADD 函数,我们可以在 MS SQL 数据库中提取只包含日期而不包含时间的值。这在处理需要忽略时间的场景中非常有用,例如只关心日期的报表或查询。希望本文对你有所帮助!