我正在执行此查询:
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
但它提供的输出类似于'2013年5月4日上午2:28'
我需要这种输出格式'2013-05-04 02:28:34.000'
答案 0 :(得分: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)”格式。
答案 1 :(得分: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