我想在SQL Server 2008中打印GETDATE(),我需要的时间以毫秒为单位(这是出于调试目的-查找sp的执行时间)
我发现这种差异
SELECT GETDATE()
返回2011-03-15 18:43:44.100print GETDATE()
返回2011年3月15日下午6:44
我认为SQL Server在打印功能中会自动进行类型转换。
我需要像这样打印日期 2011-03-15 18:43:44.100
谢谢你的帮助。
Answers:
首先,SYSDATETIME()
如果您需要更高的精度,则应该使用。
要以毫秒为单位格式化数据,请尝试CONVERT(varchar, SYSDATETIME(), 121)
。
对于其他格式,请在CAST
和上CONVERT
查看MSDN页面。
SELECT CONVERT( VARCHAR(24), GETDATE(), 113)
更新
PRINT (CONVERT( VARCHAR(24), GETDATE(), 121))
如果您的SQL Server版本支持函数FORMAT,则可以这样操作:
select format(getdate(), 'yyyy-MM-dd HH:mm:ss.fff')
创建具有返回格式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