¿Cuál es su plataforma de base de datos?
En MS SQL usted lo haría así ...
-- Create some test data
create table dbo.MyData (
Adjustment varchar(50) NOT NULL,
BaseDate datetime NOT NULL
) on [primary]
go
insert into dbo.MyData (Adjustment, BaseDate) values ('05:30:00', cast('2011-07-22 14:51:00' as datetime))
insert into dbo.MyData (Adjustment, BaseDate) values ('-2:15:00', cast('2011-06-12 10:27:30' as datetime))
go
-- Perform the adjustment
select
c.Adjustment,
c.BaseDate,
c.AdjSecs,
dateadd(s, c.AdjSecs, c.BaseDate) as AdjustedDate
from (
select
case
when left(Adjustment, 1) = '-' then -1 * datediff(s, 0, right(Adjustment, len(Adjustment) - 1))
else datediff(s, 0, right(Adjustment, len(Adjustment) - 1))
end as AdjSecs,
Adjustment,
BaseDate
from dbo.MyData
) as c
Nota, esto toma en cuenta los períodos de ajuste negativos también.
hay una razón por la que no acepta respuestas? –
Esta es una pregunta muy útil y la respuesta de Paul McLean fue acertada. Marcar como aceptado. – gligoran