2013-09-11 3 views
0

Я выполнения этого запроса:Формат даты запроса в курсоре

select createdate from OITM_CLONE where ItemCode ='bk1109' and U_SLV ='f' 

он дает выход как «2013-05-04 02: 28: 34.000»

, но я хочу, чтобы получить дату в переменной, Я использую этот запрос

declare @da as varchar (20) 
declare @d as varchar(max) 
set @d=(select createdate from OITM_CLONE where ItemCode ='bk1109' and U_SLV ='f') 
select @d 

, но он дает выход как «4 мая 2013 2:28 утра»

я нужен этот формат вывода «2013-05-04 02:28:34 0,000'

ответ

0

Если вы хотите определенный формат (это, как правило, лучше оставить данные даты-времени , как даты и времени, данных и сделать форматирование в другом месте), вам нужно использовать CONVERT и сказать ему, как именно вы хотите форматирование выполняется:

set @d=(select CONVERT(varchar(max),createdate,121) from OITM_CLONE where ItemCode ='bk1109' and U_SLV ='f') 

Где 121 является форматом «ODBC Canonical (with milliseconds)».

0

Как показано ниже, вы можете просто объявить @d, как DateTime, чтобы избежать Преобразовать

if exists 
(
    select * from tempdb.dbo.sysobjects 
    where id = object_id(N'[tempdb].dbo.[#ThisTable]') 
) 
DROP TABLE #ThisTable 
; 
create table #ThisTable 
(
    ItemCode tinyint 
    ,createdate datetime 
) 
; 
INSERT INTO #ThisTable 
(ItemCode,createdate) 
VALUES 
(1,'2013-05-04 02:28:34.000') 
,(2,'2013-05-04 02:28:34.000') 
; 
declare @da as varchar (20) ; 
declare @d as varchar(max) ; 
declare @dt as datetime ; 
set @d=(select createdate from #ThisTable where ItemCode = 1) 
set @dt=(select createdate from #ThisTable where ItemCode = 2) 
select * from #ThisTable ; 
select @d ; 
select @dt ; 

выберите @d; 4 мая 2013 г. 2:28

select @dt; 2013-05-04 02: 28: 34.000

Смежные вопросы