Konwertuj Format daty na format DD / MMM / YYYY w SQL Server

Mam zapytanie w sql, muszę pobrać datę w formacie dd/mmm/yy

Przykład: 25/jun/2013.

Jak mogę przekonwertować go na serwer SQL?

Author: Somnath Muluk, 2013-06-20

8 answers

Nie jestem pewien, czy istnieje dokładne dopasowanie do formatu, który chcesz. Ale można się zbliżyć z convert() i styl 106. Następnie zastąp spacje:

SELECT replace(convert(NVARCHAR, getdate(), 106), ' ', '/')
 55
Author: Jonathan Lonowski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-20 04:50:27

Istnieje już wiele odpowiedzi i typów formatowania dla SQL server 2008. Ale ta metoda nieco niejednoznaczna i trudno byłoby zapamiętać numer w odniesieniu do konkretnego formatu daty. Dlatego w kolejnych wersjach SQL server jest lepsza opcja.

Jeśli używasz SQL Server 2012 lub nowszych wersji, powinieneś użyć funkcji Format ()

FORMAT ( value, format [, culture ] )

Z opcją kultura, możesz określić datę według swojego widzów.

DECLARE @d DATETIME = '10/01/2011';
SELECT FORMAT ( @d, 'd', 'en-US' ) AS 'US English Result'
      ,FORMAT ( @d, 'd', 'en-gb' ) AS 'Great Britain English Result'
      ,FORMAT ( @d, 'd', 'de-de' ) AS 'German Result'
      ,FORMAT ( @d, 'd', 'zh-cn' ) AS 'Simplified Chinese (PRC) Result'; 

SELECT FORMAT ( @d, 'D', 'en-US' ) AS 'US English Result'
      ,FORMAT ( @d, 'D', 'en-gb' ) AS 'Great Britain English Result'
      ,FORMAT ( @d, 'D', 'de-de' ) AS 'German Result'
      ,FORMAT ( @d, 'D', 'zh-cn' ) AS 'Chinese (Simplified PRC) Result';

US English Result Great Britain English Result  German Result Simplified Chinese (PRC) Result
----------------  ----------------------------- ------------- -------------------------------------
10/1/2011         01/10/2011                    01.10.2011    2011/10/1

US English Result            Great Britain English Result  German Result                    Chinese (Simplified PRC) Result
---------------------------- ----------------------------- -----------------------------  ---------------------------------------
Saturday, October 01, 2011   01 October 2011               Samstag, 1. Oktober 2011        2011年10月1日

Dla rozwiązania OP możemy użyć następującego formatu, o którym już wspomniał @Martin Smith:

FORMAT(GETDATE(), 'dd/MMM/yyyy', 'en-us')

Niektóre przykładowe formaty daty:

Tutaj wpisz opis obrazka

Jeśli chcesz uzyskać więcej formatów daty SQL server, powinieneś odwiedzić:

  1. Niestandardowy Format daty i czasu
  2. Standardowy Format daty i czasu
 37
Author: Somnath Muluk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-23 09:22:29

Możemy przekonwertować datę na wiele formatów, takich jak

SELECT convert(varchar, getdate(), 106)

To zwraca dd mon yyyy

Więcej tutaj to może Ci pomóc

 29
Author: Nithesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-20 04:51:15

Spróbuj użyć poniższego zapytania.

SELECT REPLACE(CONVERT(VARCHAR(11),GETDATE(),6), ' ','/');  

Wynik: 20/Jun / 13

SELECT REPLACE(CONVERT(VARCHAR(11),GETDATE(),106), ' ','/');  

Wynik: 20 / Jun / 2013

 8
Author: Praveen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-20 04:51:10

Przyjęta odpowiedź daje już najlepsze rozwiązanie przy użyciu wbudowanych metod formatowania w 2008 roku.

Należy jednak zauważyć, że zwracane wyniki zależą od języka logowania.

SET language Russian

SELECT replace(CONVERT(NVARCHAR, getdate(), 106), ' ', '/') 

Zwraca

06/апр/2015

W momencie pisania.

Dla osób natykających się na to pytanie w nowszych wersjach SQL Server metoda, która pozwala uniknąć tego problemu - a potrzeba REPLACE to

FORMAT(GETDATE(),'dd/MMM/yyyy', 'en-us')

Na 2005+ można by napisać CLR UDF, który zaakceptował DateTime, wzór formatowania i kulturę, aby symulować to samo.

 7
Author: Martin Smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-06 15:40:46

Spróbuj tego

select convert(varchar,getdate(),100)

Trzecim parametrem jest format, zakres od 100 do 114, każdy powinien pracować dla Ciebie.

Jeśli potrzebujesz daty w dd/mmm/yyyy Użyj tego:

replace(convert(char(11),getdate(),113),' ','-')

Zastąp getdate() nazwą kolumny. To mi pomogło.

 1
Author: Chethan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-14 14:49:19

Spróbuj tego:

select replace ( convert(varchar,getdate(),106),' ','/')
 1
Author: KD29,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-04 11:26:00

Każdy, kto próbuje ręcznie wprowadzić datę do zmiennej SQL server 'date type', używa tego formatu podczas wpisywania:

'yyyy-mm-dd'

 0
Author: IteratioN7T,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-07 09:59:47