SELECT GETDATE()

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

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

我怎么能得到那个?


当前回答

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

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

其他回答

您可以使用CONVERT函数仅返回日期。请参阅以下链接:

SQL Server 2000中的日期和时间操作

铸造和转换

使用convert函数的语法为:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) 

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

select cast(getdate() as date)

语法:

SELECT CONVERT (data_type(length)),Date, DateFormatCode)

Ex:

Select CONVERT(varchar,GETDATE(),1) as [MM/DD/YY]
Select CONVERT(varchar,GETDATE(),2) as [YY.MM.DD]

关于日期的所有日期格式代码:

DateFormatCode  Format
1       [MM/DD/YY]
2       [YY.MM.DD]
3       [DD/MM/YY]
4       [DD.MM.YY]
5       [DD-MM-YY]
6       [DD MMM YY]
7       [MMM DD,YY]
10      [MM-DD-YY]
11      [YY/MM/DD]
12      [YYMMDD]
23      [yyyy-mm-dd]
101     [MM/DD/YYYY]
102     [YYYY.MM.DD]
103     [DD/MM/YYYY]
104     [DD/MM/YYYY]
105     [DD/MM/YYYY]
106     [DD MMM YYYY]
107     [MMM DD,YYYY]
110     [MM-DD-YYYY]
111     [YYYY/MM/DD]
112     [YYYYMMDD]
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转换无需考虑区域设置

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

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