如何仅将日期时间转换为日期(时间设置为00:00:00.000)

Sao*_*obi 11 sql t-sql sql-server sql-server-2005

我有一个字符串'2009-06-24 09:52:43.000',我需要将其插入到表的DateTime列中.

但是我不在乎时间,只想插入它作为2009-06-24 00:00:00.000

我怎么能在T-SQL中做到这一点?

GSe*_*erg 14

对于SQL Server 2005及更低版本:

CONVERT(varchar(8), @ParamDate, 112)    -- Supported way

CAST(FLOOR(CAST(@ParamDate AS float)) AS DATETIME)   -- Unsupported way
Run Code Online (Sandbox Code Playgroud)

对于SQL Server 2008及更高版本:

CAST(@ParamDate AS DATE)
Run Code Online (Sandbox Code Playgroud)

  • 它是日期的格式说明符.请参阅http://msdn.microsoft.com/en-us/library/ms187928.aspx (4认同)
  • 正确.请注意,只有112是正确的,因为它是ISO格式(而不是与语言环境相关的格式). (2认同)

Kev*_*man 11

declare @originalDate datetime
select @originalDate = '2009-06-24 09:52:43.000'

declare @withoutTime datetime
select @withoutTime = dateadd(d, datediff(d, 0, @originalDate), 0)

select @withoutTime
Run Code Online (Sandbox Code Playgroud)


DBA*_*rew 6

SELECT CAST(CONVERT(VARCHAR,GETDATE(),102) AS DATETIME)

SELECT CAST(CONVERT(VARCHAR(10),'2009-06-24 09:52:43.000',102) AS DATETIME)
Run Code Online (Sandbox Code Playgroud)


小智 5

我发现将日期转换为日期,然后转换为日期时间非常有效和直观。

 SELECT CAST(CAST(GETDATE() as date) as datetime)
Run Code Online (Sandbox Code Playgroud)