SELECT GETDATE()

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

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

我怎么能得到那个?


当前回答

语法:

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]

其他回答

日期(日期和时间字段)和Date_FORMAT(日期和日期,“%Y-%m-%d”)都只返回日期和时间的日期

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

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

铸造和转换

使用convert函数的语法为:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) 
select convert(getdate() as date)

select CONVERT(datetime,CONVERT(date, getdate()))
select cast(createddate as date) as derivedate from table 

createdate是您的datetime列,这适用于sqlserver

我赞成以下未提及的内容:

DATEFROMPARTS(DATEPART(yyyy, @mydatetime), DATEPART(mm, @mydatetime), DATEPART(dd, @mydatetime))

它也不关心本地或进行双重转换——尽管每个“datepart”可能都做数学运算。因此,它可能比datediff方法慢一点,但对我来说,它更清晰。尤其是当我想按年份和月份分组时(将日期设置为1)。