Prueba esto:
DECLARE @Date varchar(23)
,@Time varchar(23)
,@Both datetime
SELECT @Date='2010-05-25 00:00:00.000'
,@Time='2010-01-01 11:11:58.000'
SELECT @Both=LEFT(@Date,10)+' '+RIGHT(@Time,12)
SELECT @Both
SALIDA:
-----------------------
2010-05-25 11:11:58.000
(1 row(s) affected)
Conjunto basado:
DECLARE @INSERTED table(RowID int, DateOf varchar(23), TimeOf varchar(23), DateTimeOf datetime)
INSERT @INSERTED VALUES (1,'2010-05-25 00:00:00.000','2010-01-01 11:11:58.000',null)
INSERT @INSERTED VALUES (2,'2010-04-05 00:00:00.000','2010-01-01 12:34:56.789',null)
INSERT @INSERTED VALUES (3,'2010-03-15 00:00:00.000','2010-01-01 01:01:01.000',null)
UPDATE @INSERTED
SET DateTimeOf=LEFT(DateOf,10)+' '+RIGHT(TimeOf,12)
SELECT * FROM @INSERTED
SALIDA:
RowID DateOf TimeOf DateTimeOf
------- ----------------------- ----------------------- -----------------------
1 2010-05-25 00:00:00.000 2010-01-01 11:11:58.000 2010-05-25 11:11:58.000
2 2010-04-05 00:00:00.000 2010-01-01 12:34:56.789 2010-04-05 12:34:56.790
3 2010-03-15 00:00:00.000 2010-01-01 01:01:01.000 2010-03-15 01:01:01.000
(3 row(s) affected)
La fecha y la hora como tipos de datos parecen mucho más limpias que tirar de las posiciones de una cadena. Nuevo en 08, dices. Por lo que me tiene los primeros 9 yardas - i puede actualizar todas las filas de la tabla - ¿Cómo puedo actualizar sólo las filas insertadas - se parece a un mínimo que debería buscar en 'Insertar antes' en lugar de después THX Si – justSteve
puede, evitar el disparador por completo y simplemente agregar otra columna a la tabla como una columna calculada. Puedes hacer esto usando una declaración s como esta: ALTER TABLE puede agregar ADD DateAndTime (cast (cast (@datet como date) como datetime) + cast (cast (@datet as time) como datetime)); –
En mi caso, tenía un tiempo estático que quería virar y pude evitar el reparto interno en la porción de tiempo. Así que el elenco (elenco (some_date_col como date) como datetime + cast ('11: 59: 59 PM 'como datetime) funcionó espléndidamente y fue un poco más conciso. – jinglesthula