Преобразование JCSBMDATE (1YYDDD) и JCSBMTIME в datetime
declare @t table (JCSBMDATE char(6),JCSBMTIME varchar(6))
insert @t select '111056', '104602'
insert @t select '199365', '81602'
select dateadd(d,
right(JCSBMDATE,3)-1,
convert(datetime,'01/01/' + substring(JCSBMDATE,2,2),3)) +
convert(datetime, stuff(
stuff(JCSBMTIME,
len(JCSBMTIME)-3,0,':'),
len(JCSBMTIME),0,':'))
from @t
Обратное преобразование, более удобное для индекса
select '1' +
right(year(getdate()),2) +
right(1000+datepart(dy, getdate()),3) as JCSBMDATE,
right(1+replace(convert(char(8),getdate(),8),':',''),6) as JCSBMTIME
Вы можете легко настроить getdate()
с помощью dateadd(mi,-15,getdate())
, чтобы получитьЗначения JCSBMDATE и JCSBMTIME 15 минут назад.