如何在毫秒的时间在SQL Server中打印GETDATE()?

我想在SQL Server 2008中打印GETDATE() ,我需要毫秒的时间(这是为了debugging的目的 – findsp的执行时间)

我发现这种差异

  • SELECT GETDATE()返回2011-03-15 18:43:44.100
  • print GETDATE()返回2011年3月15日下午6:44

我认为SQL Server自动在打印function中进行types转换。

我需要打印这样的date2011-03-15 18:43:44.100

谢谢你的帮助。

首先,如果你正在寻找更高的精度,你应该使用SYSDATETIME()

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

对于其他格式,请查看CASTCONVERT上的MSDN页面 。

 SELECT CONVERT( VARCHAR(24), GETDATE(), 113) 

UPDATE

 PRINT (CONVERT( VARCHAR(24), GETDATE(), 121)) 

如果你的SQL Server版本支持FORMATfunction,你可以这样做:

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

这两个是一样的:

 Print CAST(GETDATE() as Datetime2 (3) ) PRINT (CONVERT( VARCHAR(24), GETDATE(), 121)) 

在这里输入图像说明

尝试以下

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

创build一个返回格式为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

这相当于JavaScript中的new Date().getTime()

使用下面的语句来获得秒钟的时间。

 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