SELECT GETDATE()

返回时间:2008-09-22 15:24:13.790

我想要没有时间部分的日期部分:2008-09-22 00:00:00.000

我怎么能得到那个?


当前回答

select convert(getdate() as date)

select CONVERT(datetime,CONVERT(date, getdate()))

其他回答

SELECT CONVERT(datetime, CONVERT(varchar, GETDATE(), 101))

从SQL SERVER 2012开始,您可以执行以下操作:

选择格式(GETDATE(),'yyyy-MM-dd 00:00:00.000')

自从这个问题有了答案之后,有了很多变化,我想提供一种新的方法来获得所要求的结果。分析DATETIME数据有两种方法。首先,按照这个问题的要求获取日期:

DATEVALUE([TableColumnName])

第二,从值中获取时间:

TIMEVALUE([TableColumnName])

例子:

表:客户

列:CreationDate作为DateTime

[客户]。[创建日期]:2020年2月7日09:50:00

DATEVALUE([Customers].[CreationDate]) '--> Output: 2/7/2020
TIMEVALUE([Customers].[CreationDate]) '--> Output: 09:50:00

我希望这会有所帮助,因为我搜索了一段时间,找到了这个问题中看到的许多答案,但没有一个有效。IE铸造和转换。

快乐编码!

简单地说,您可以这样做:

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

或者简单地这样做:

SELECT CONVERT (DATE, GETDATE()) 'Date Part Only'

结果:

Date Part Only
--------------
2013-07-14

从SQL Server 2022(16.x)开始,另一个选项是DATETRUNC()函数,使用day作为datepart参数的值:

SELECT DATETRUNC(day, GETDATE());