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 Canonical (ミリ秒付き)」形式はどこにありますか。

于 2013-09-11T07:10:41.437 に答える