Jaki jest Twój platforma bazy danych?
W MS SQL chcesz zrobić to w ten sposób ...
-- 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
Uwaga ta uwzględnia negatywnych okresów dostosowawczych też.
jest jakiś powód, dla którego nigdy nie akceptować odpowiedzi? –
To bardzo przydatne pytanie, a odpowiedź Paula McLeana była trafna. Oznacz to jako zaakceptowane. – gligoran