SELECT GETDATE()

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

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

我怎么能得到那个?


当前回答

我的风格

      select Convert(smalldatetime,Convert(int,Convert(float,getdate())))

其他回答

自从这个问题有了答案之后,有了很多变化,我想提供一种新的方法来获得所要求的结果。分析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铸造和转换。

快乐编码!

您可以对日期部分和日期格式使用以下内容:

DATENAME=>返回表示指定日期的指定日期部分的字符串

DATEADD=>DATEPART()函数用于返回日期/时间的单个部分,例如年、月、日、小时、分钟等。

DATEPART=>返回表示指定日期的指定日期部分的整数。

CONVERT()=>CONVERT函数是将一种数据类型的表达式转换为另一种数据的通用函数。这个CONVERT()函数可用于以不同格式显示日期/时间数据。

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

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

DECLARE @yourdate DATETIME = '11/1/2014 12:25pm'    
SELECT CONVERT(DATE, @yourdate)

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

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