จะพิมพ์ GETDATE () ใน SQL Server โดยใช้เวลาเป็นมิลลิวินาทีได้อย่างไร?


96

ฉันต้องการพิมพ์GETDATE ()ใน SQL Server 2008 ฉันต้องการเวลาเป็นมิลลิวินาที (นี่คือจุดประสงค์ในการดีบัก - เพื่อค้นหาเวลาดำเนินการของ sp)

ฉันพบความแตกต่างนี้

  • SELECT GETDATE()ส่งคืน2011-03-15 18: 43: 44.100
  • print GETDATE()ส่งคืน15 มี.ค. 2554 18:44 น

ฉันคิดว่า SQL Server พิมพ์คาสต์โดยอัตโนมัติในฟังก์ชันการพิมพ์

ฉันต้องพิมพ์วันที่แบบนี้ 2011-03-15 18:43:44.100

ขอบคุณสำหรับความช่วยเหลือของคุณ.

คำตอบ:


114

อันดับแรกคุณควรใช้SYSDATETIME()หากคุณต้องการความแม่นยำมากขึ้น

CONVERT(varchar, SYSDATETIME(), 121)การจัดรูปแบบข้อมูลของคุณกับมิลลิวินาทีลอง

สำหรับรูปแบบอื่น ๆ ให้ตรวจสอบหน้า MSDN บนCASTCONVERTและ


3
พิมพ์ CAST (GETDATE () เป็น Datetime2 (7)) มันใช้งานได้ดีเกินไปขอบคุณสำหรับคำตอบ
รามก

2
PRINT CAST (SYSDATETIME () AS NVARCHAR (200)) ทำงานได้อย่างมีเสน่ห์
Gabriel Espinoza


33

หากเวอร์ชัน SQL Server ของคุณรองรับฟังก์ชัน FORMAT คุณสามารถทำได้ดังนี้:

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


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

สร้างฟังก์ชันด้วยรูปแบบ return 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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.