SELECT GETDATE()
返回时间:2008-09-22 15:24:13.790
我想要没有时间部分的日期部分:2008-09-22 00:00:00.000
我怎么能得到那个?
SELECT GETDATE()
返回时间:2008-09-22 15:24:13.790
我想要没有时间部分的日期部分:2008-09-22 00:00:00.000
我怎么能得到那个?
当前回答
使用FLOOR()-只需削减时间部分。
SELECT CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)
其他回答
好吧,虽然我迟到了:),这是另一个解决方案。
SELECT CAST(FLOOR(CAST(GETDATE() AS FLOAT)) as DATETIME)
后果
2008-09-22 00:00:00.000
如果您使用的是SQL Server 2012或更高版本,则可以使用以下FORMAT()函数-
SELECT FORMAT(GETDATE(), 'yyyy-MM-dd')
试试看:
SELECT CONVERT(VARCHAR(10),GETDATE(),111)
以上语句将您当前的格式转换为YYYY/MM/DD,请参阅此链接以选择您的首选格式。
我赞成以下未提及的内容:
DATEFROMPARTS(DATEPART(yyyy, @mydatetime), DATEPART(mm, @mydatetime), DATEPART(dd, @mydatetime))
它也不关心本地或进行双重转换——尽管每个“datepart”可能都做数学运算。因此,它可能比datediff方法慢一点,但对我来说,它更清晰。尤其是当我想按年份和月份分组时(将日期设置为1)。
如果您希望日期显示为2008-09-22 00:00:00.000
然后你可以用
SELECT CONVERT(datetime, (ROUND(convert(float, getdate()-.5),0)))
这将以问题中的格式显示日期
语法:
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]