2011-09-23 14 views

Odpowiedz

17
select replace(
     replace(
     replace(convert(varchar(19), getdate(), 126), 
     '-',''), 
     'T',''), 
     ':','') 
+10

i jak brzydkie jest to! :) –

+0

Wielkie dzięki za odpowiedź. Bardzo mi to pomogło :). –

6

Blisko, ale nie do końca, o co prosicie przez:

select CONVERT(varchar, GETDATE(), 126) 

np

2011-09-23T12:18:24.837 

(rrrr-mm-DDTgg: mi: SS.mmm (bez spacji), ISO8601 bez strefy czasowej)

Ref: CAST and CONVERT

Nie ma sposobu, aby określić format niestandardowy z CONVERT() . Inną opcją jest manipulowanie ciągami w celu utworzenia w pożądanym formacie.

3

Spróbuj:

wybrać CONVERT (VARCHAR GETDATE(), 120) np

2011-09-23 12:18:24 (rrrr-mm-dd hh: mi: ss (24h), kanoniczny ODBC).

Hth.

17

Tylko dla kogoś szukasz tej funkcjonalności, który ma SQL Server 2012 można użyć funkcji Format:

SELECT FORMAT (GETDATE(), 'yyyyMMddHHmmss') AS 'Custom DateTime' 

pozwala to jakieś ciągi formatu NET co czyni go użytecznym nowy dodatek.

+2

+1 - bardzo pomocne. Teraz możesz użyć wszystkich tych formatów datetime.tostring ze środowiska .net. http://msdn.microsoft.com/en-us/library/zdtaw1bw(v=vs.110).aspx – TWood

+0

Dzięki, pracował dla mnie! –

0

Konwersja datetime w ten sposób wymaga więcej niż jednego połączenia do przekonwertowania. Najlepiej do tego celu służy funkcja zwracająca varchar.

select CONVERT(varchar,GETDATE(),112) --YYYYMMDD 
select CONVERT(varchar,GETDATE(),108) --HH:MM:SS 

je razem jak tak wewnątrz funkcji

DECLARE @result as varchar(20) 
set @result = CONVERT(varchar,GETDATE(),112) + ' ' + CONVERT(varchar,GETDATE(),108) 
print @result 

20131220 13:15:50

Jak Thinhbk pisał można użyć select CONVERT(varchar,getdate(),20) lub select CONVERT(varchar,getdate(),120) dostać całkiem blisko tego, co chcesz.

1

Inna opcja!

SELECT CONVERT(nvarchar(8), GETDATE(),112) + 
    CONVERT(nvarchar(2),DATEPART(HH,GETDATE())) + 
    CONVERT(nvarchar(2),DATEPART(MI,GETDATE())) + 
    CONVERT(nvarchar(2),DATEPART(SS,GETDATE())); 
Powiązane problemy