我想在 SQLServer2008中打印 GETDATE (),我需要以毫秒为单位的时间(这是为了调试目的——查找 sp 的执行时间)
我发现这个区别
我认为 SQLServer 在打印功能中会自动进行类型转换。
我需要打印这样的日期 2011-03-15 18:43:44.100
2011-03-15 18:43:44.100
谢谢你的帮助。
SELECT CONVERT( VARCHAR(24), GETDATE(), 113)
更新
PRINT (CONVERT( VARCHAR(24), GETDATE(), 121))
首先,如果希望获得更高的精度,可能应该使用 SYSDATETIME()。
SYSDATETIME()
若要以毫秒格式化数据,请尝试 CONVERT(varchar, SYSDATETIME(), 121)。
CONVERT(varchar, SYSDATETIME(), 121)
有关其他格式,请查看 关于 ABC0和 CONVERT的 MSDN 页面。
CONVERT
试试跟踪
DECLARE @formatted_datetime char(23) SET @formatted_datetime = CONVERT(char(23), GETDATE(), 121) print @formatted_datetime
这两个是一样的:
Print CAST(GETDATE() as Datetime2 (3) ) PRINT (CONVERT( VARCHAR(24), GETDATE(), 121))
UPDATE:
比 Datetime 是 datetime2(3)好
declare @dt datetime2(3)=sysdatetime() print @dt Print CAST(sysdatetime() as Datetime2(3) ) print sysdatetime()
如果您的 SQLServer 版本支持 FORMAT 函数,您可以这样做:
select format(getdate(), 'yyyy-MM-dd HH:mm:ss.fff')
This is equivalent to new Date().getTime() in 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
创建一个返回格式为 yyyy-mm-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-2110.12:50.123