协慌网

登录 贡献 社区

如何仅从 SQL Server DateTime 数据类型返回日期

SELECT GETDATE()

2008-09-22 15:24:13.7902008-09-22 15:24:13.790

我希望那个日期部分没有时间部分: 2008-09-22 00:00:00.000

我怎么能得到它?

答案

SQL Server 2008及更高版本上,您应该CONVERT到日期:

SELECT CONVERT(date, getdate())

在旧版本上,您可以执行以下操作:

SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, @your_date))

例如

SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))

给我

2008-09-22 00:00:00.000

优点:

  • 无需varchar <-> datetime转换
  • 无需考虑locale

SQLServer 2008 现在具有 “日期” 数据类型,该类型仅包含没有时间组件的日期。使用 SQLServer 2008 及更高版本的任何人都可以执行以下操作:

SELECT CONVERT(date, GETDATE())

如果使用 SQL 2008 及更高版本:

select cast(getdate() as date)