-------------------------------------------------------
-- Casting string date & time together and separately
-------------------------------------------------------
-------------------------------------------------------
-- SQL cast string to datetime
SELECT CAST('20100315 16:40:31' AS datetime)
-- Result: 2010-03-15 16:40:31.000
-- SQL cast string to date - time part 0
SELECT CAST('20100315' AS datetime)
-- Result: 2010-03-15 00:00:00.000
-- SQL cast string to time - date part 1900-01-01
SELECT CAST('16:40:31' AS smalldatetime)
-- Result: 1900-01-01 16:41:00
------------
-- SQL DATEDIFF with string date
------------
DECLARE @sDate varchar(10)
SET @sDate = '2010/03/15'
-- DATEDIFF (delta) between two dates in months
SELECT GETDATE(), DATEDIFF (MONTH, GETDATE(), @sDate)
SELECT GETDATE(), DATEDIFF (MONTH, GETDATE(), CAST(@sDate as datetime))
SELECT GETDATE(), DATEDIFF (MONTH, GETDATE(), CONVERT(datetime,@sDate))
SELECT GETDATE(), DATEDIFF (MONTH, GETDATE(), CONVERT(datetime,@sDate,111))
-- Seme results for above: 2008-12-29 11:04:51.097 15
-- SQL convert to datetime with wrong style (111 correct, 112 incorrect)
SELECT GETDATE(), DATEDIFF (MONTH, GETDATE(), CONVERT(datetime,@sDate,112))
/* ERROR
Msg 241, Level 16, State 1, Line 11
Conversion failed when converting date and/or time from character
string.
*/
------------