SELECT GETDATE()

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

我想要没有时间部分的日期部分:2008-09-22 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铸造和转换。

快乐编码!

其他回答

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

CONVERT(VARCHAR(10),Person.DateOfBirth,111) AS BirthDate
//here date is obtained as 1990/09/25
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(datetime, CONVERT(varchar, GETDATE(), 101))

好吧,虽然我迟到了:),这是另一个解决方案。

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')

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

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

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有这样的冗余?

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

希望这对某人有所帮助。