I have a string \'2009-06-24 09:52:43.000\', which I need to insert to a DateTime column of a table.
But I don\'t care about the time, just want to insert it as 2009-06-
A variety of hacks:
convert
to convert your datetime to a string using just the date portionsubstring
to chop off the endfloor
For SQL Server 2005 and below:
CONVERT(varchar(8), @ParamDate, 112) -- Supported way
CAST(FLOOR(CAST(@ParamDate AS float)) AS DATETIME) -- Unsupported way
For SQL Server 2008 and above:
CAST(@ParamDate AS DATE)
James is correct. If you're starting off with a string, and the format will always be what you say it is, then you keep it simple and efficient. Use LEFT( @StrDate, 10)
and CONVERT
that to your datetime value. Done.
If your input string could be any valid date/time format, then you have to use CONVERT(datetime, @StrDate)
first. After that you go with what Bing just said to strip off the time part.
Probably a cleaner and more portable way to do this, but my years old idiom is:
insert into tbl (date_column)
select convert(varchar, convert (datetime, '2009-06-24 09:52:43.000'), 101)
An enhancement to the unsupported version:
I am not sure if this may effect any performance. getdate()
is an input timestamp in my query.
select cast(cast(getdate() as DATE) as DATETIME)