SELECT GETDATE()

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

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

我怎么能得到那个?


当前回答

哇,让我数一数你能做到这一点的方法。(无意双关)

为了以这种格式获得您想要的结果:

2008-09-22

这里有几个选项。

SELECT CAST(GETDATE() AS DATE) AS 'Date1'
SELECT Date2  = CONVERT(DATE, GETDATE())
SELECT CONVERT(DATE, GETDATE()) AS 'Date3'
SELECT CONVERT(CHAR(10), GETDATE(), 121) AS 'Date4'
SELECT CONVERT(CHAR(10), GETDATE(), 126) AS 'Date5'
SELECT CONVERT(CHAR(10), GETDATE(), 127) AS 'Date6'

所以,我建议你选择一个你满意的方法,并在所有的桌子上使用这种方法。

所有这些选项都以完全相同的格式返回日期。为什么SQL Server有这样的冗余?

我不知道,但他们知道。也许比我聪明的人可以回答这个问题。

希望这对某人有所帮助。

其他回答

我认为这对你来说是可行的:

CONVERT(VARCHAR(10),Person.DateOfBirth,111) AS BirthDate
//here date is obtained as 1990/09/25

只要做到:

SELECT CAST(日期变量为日期)

或使用PostgreSQL:

SELECT date_variable::日期

这就是所谓的打字!

最简单的方法是使用:选择日期(GETDATE())

使用FLOOR()-只需削减时间部分。

SELECT CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)
SELECT CONVERT(VARCHAR,DATEADD(DAY,-1,GETDATE()),103) --21/09/2011

SELECT CONVERT(VARCHAR,DATEADD(DAY,-1,GETDATE()),101) --09/21/2011

SELECT CONVERT(VARCHAR,DATEADD(DAY,-1,GETDATE()),111) --2011/09/21

SELECT CONVERT(VARCHAR,DATEADD(DAY,-1,GETDATE()),107) --Sep 21, 2011