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

但它给出的输出类似于 'May 4 2013 2:28AM'

我需要这种输出格式'2013-05-04 02:28:34.000'

4

2 回答 2

0

如下所示,您可以简单地将@d 声明为 datetime 以避免 CONVERT

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;2013 年 5 月 4 日凌晨 2:28

选择@dt;2013-05-04 02:28:34.000

于 2013-09-11T23:54:45.343 回答
0

如果您想要特定格式(通常最好将日期时间数据保留日期时间数据并在其他地方进行格式化),您需要使用CONVERT并准确告诉它您希望如何执行格式化:

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

121“ODBC 规范(以毫秒为单位)”格式在哪里。

于 2013-09-11T07:10:41.437 回答