SQL Server puede convertir implícitamente cadenas en forma de 'YYYYMMDD' en una fecha y hora; todas las demás cadenas deben emitirse explícitamente. aquí hay dos bloques de código rápidos que hacer la conversión de la forma que está hablando:
versión 1 utiliza variables unitarios:
BEGIN
DECLARE @input VARCHAR(8), @mon CHAR(2),
@day char(2), @year char(4), @output DATETIME
SET @input = '10022009' --today's date
SELECT @mon = LEFT(@input, 2), @day = SUBSTRING(@input, 3,2), @year = RIGHT(@input,4)
SELECT @output = @[email protected][email protected]
SELECT @output
END
versión 2 no utiliza variables de unidad:
BEGIN
DECLARE @input CHAR(8), @output DATETIME
SET @input = '10022009' --today's date
SELECT @output = RIGHT(@input,4) + SUBSTRING(@input, 3,2) + LEFT(@input, 2)
SELECT @output
END
Ambos casos dependen de la capacidad del servidor SQL para realizar esa conversión implícita.
¿tsql tiene una función str_to_date como MySQL? http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_str-to-date – dnagirl
OP quiere mmddyyyy; select convert (datetime, '12312009') - >>> _ Msg 242, Level 16, State 3, Line 1 La conversión de un tipo de datos char a un tipo de datos datetime dio como resultado un valor de fecha y hora fuera de rango. –