如何以毫秒为单位在SQL Server中打印GETDATE()?


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

谢谢你的帮助。

Answers:


110

首先,SYSDATETIME()如果您需要更高的精度,则应该使用。

要以毫秒为单位格式化数据,请尝试CONVERT(varchar, SYSDATETIME(), 121)

对于其他格式,请CAST和上CONVERT查看MSDN页面


3
打印CAST(GETDATE()为Datetime2(7))这也可行,谢谢您的回答。
Ramakrishnan

2
PRINT CAST(SYSDATETIME()AS NVARCHAR(200))就像一种魅力
Gabriel Espinoza




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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.