GETDATE()をSQL Serverでミリ秒単位で印刷する方法は?


91

SQL Server 2008でGETDATE()を出力したいのですが、ミリ秒単位の時間が必要です(これはデバッグのためです-spの実行時間を見つけるためです)

私はこの違いを見つけます

  • SELECT GETDATE()2011-03-15 18:43:44.100を返します
  • print GETDATE()2011年3月15日午後6時44分を返します

SQL Serverは印刷機能を自動的に型キャストすると思います。

このように日付を印刷する必要があります 2011-03-15 18:43:44.100

ご協力いただきありがとうございます。

回答:


110

最初に、SYSDATETIME()より精度を求める場合は、おそらく使用する必要があります。

データをミリ秒でフォーマットするには、を試してくださいCONVERT(varchar, SYSDATETIME(), 121)

その他の形式についてはCASTおよびのMSDNページをご覧くださいCONVERT


3
Print CAST(GETDATE()as Datetime2(7))これはうまくいきます。回答ありがとうございます。
ラマクリシュナン

2
PRINTのCAST(SYSDATETIME()AS NVARCHAR(200))が魔法のように動作します
ガブリエル・エスピノーザ


29

SQL Serverのバージョンが関数FORMATをサポートしている場合は、次のように実行できます。

select format(getdate(), 'yyyy-MM-dd HH:mm:ss.fff')


1

フォローしてみてください

DECLARE @formatted_datetime char(23)
SET @formatted_datetime = CONVERT(char(23), GETDATE(), 121)
print @formatted_datetime

1

これはnew Date().getTime()JavaScriptの場合と同じです:

時間を秒単位で取得するには、以下のステートメントを使用します。

SELECT  cast(DATEDIFF(s, '1970-01-01 00:00:00.000', '2016-12-09 16:22:17.897' ) as bigint)

以下のステートメントを使用して、ミリ秒単位で時間を取得します。

SELECT  cast(DATEDIFF(s, '1970-01-01 00:00:00.000', '2016-12-09 16:22:17.897' ) as bigint)  * 1000

1

戻り形式がyyyy-mm-hh hh:mi:ss.sssの関数を作成します

create function fn_retornaFecha (@i_fecha datetime)
returns varchar(23)
as
begin
declare 
@w_fecha varchar(23),
@w_anio  varchar(4),
@w_mes   varchar(2),
@w_dia   varchar(2),
@w_hh    varchar(2),
@w_nn    varchar(2),
@w_ss    varchar(2),
@w_sss   varchar(3)

select @w_fecha = null

if ltrim(rtrim(@i_fecha)) is not null 
begin
   select
   @w_anio = replicate('0',4-char_length( convert(varchar(4), year(@i_fecha)) )) + convert(varchar(4), year(@i_fecha)),
   @w_mes  = replicate('0',2-char_length( convert(varchar(2),month(@i_fecha)) )) + convert(varchar(2),month(@i_fecha)),
   @w_dia  = replicate('0',2-char_length( convert(varchar(2),  day(@i_fecha)) )) + convert(varchar(2),  day(@i_fecha))  ,
   @w_hh   = replicate('0',2-char_length( convert(varchar(2),datepart( hh, @i_fecha ) ) )) + convert(varchar(2),datepart( hh, @i_fecha ) ),
   @w_nn   = replicate('0',2-char_length( convert(varchar(2),datepart( mi, @i_fecha ) ) )) + convert(varchar(2),datepart( mi, @i_fecha ) ),
   @w_ss   = replicate('0',2-char_length( convert(varchar(2),datepart( ss, @i_fecha ) ) )) + convert(varchar(2),datepart( ss, @i_fecha ) ),
   @w_sss  = convert(varchar(3),datepart( ms, @i_fecha ) ) + replicate('0',3-DATALENGTH( convert(varchar(3),datepart( ms, @i_fecha ) )  ))


   select @w_fecha = @w_anio + '-' + @w_mes + '-' + @w_dia + ' ' + @w_hh + ':' + @w_nn + ':' + @w_ss + '.' + @w_sss
end

return @w_fecha

end
go

select fn_retornaFecha(getdate())

結果は次のとおりです:2016-12-21 10:12:50.123

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.