SELECT GETDATE()

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

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

我怎么能得到那个?


当前回答

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

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

其他回答

SQLServer2008现在有一个“日期”数据类型,它只包含一个日期,而不包含时间组件。使用SQLServer 2008及更高版本的任何人都可以执行以下操作:

SELECT CONVERT(date, GETDATE())
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 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')

从SQL Server 2022(16.x)开始,另一个选项是DATETRUNC()函数,使用day作为datepart参数的值:

SELECT DATETRUNC(day, GETDATE());

为什么不使用DATE_FORMAT(your_datetiem_column,'%d-%m-%Y')?

示例:从table_name中选择DATE_FORMAT(some_datetime_column,“%d-%m-%Y”)

您可以通过重新排列“%d-%m-%Y”部分来更改m、d和year的顺序