Как напечатать GETDATE () в SQL Server с миллисекундами по времени?

96

Я хочу напечатать GETDATE () в SQL Server 2008, мне нужно время в миллисекундах (это для целей отладки - чтобы найти время выполнения sp)

Я нахожу эту разницу

  • SELECT GETDATE()возвращает 2011-03-15 18: 43: 44.100
  • print GETDATE()возвращается 15 марта 2011 18:44

Я думаю, что SQL Server автоматически выполняет приведение типов при печати.

Мне нужно напечатать дату вот так 2011-03-15 18:43:44.100

Спасибо за вашу помощь.

Рамакришнан
источник

Ответы:

114

Во-первых, вам, вероятно, следует использовать, SYSDATETIME()если вы хотите большей точности.

Чтобы отформатировать данные в миллисекундах, попробуйте CONVERT(varchar, SYSDATETIME(), 121).

Чтобы узнать о других форматах, посетите страницу MSDN на сайте CASTиCONVERT .

Адам Робинсон
источник
3
Напечатайте CAST (GETDATE () as Datetime2 (7)) Это тоже работает, спасибо за ваш ответ.
Рамакришнан
2
PRINT CAST (SYSDATETIME () AS NVARCHAR (200)) работает как шарм
Габриэль Эспиноза
53
SELECT CONVERT( VARCHAR(24), GETDATE(), 113)

ОБНОВИТЬ

PRINT (CONVERT( VARCHAR(24), GETDATE(), 121))
Крис Иванов
источник
33

Если ваша версия SQL Server поддерживает функцию FORMAT, вы можете сделать это следующим образом:

select format(getdate(), 'yyyy-MM-dd HH:mm:ss.fff')
Стефан Мичев
источник
12

эти 2 одинаковые:

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

введите описание изображения здесь

Марчелло Миорелли
источник
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

Создайте функцию с форматом возврата гггг-мм-чч чч: 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

admincedep
источник