Jak pobrać datę z programu SQL Server w YYYY-MM-DD
formacie? Potrzebuję tego do pracy z SQL Server 2000 i nowszymi wersjami. Czy istnieje prosty sposób na wykonanie tego w programie SQL Server, czy też łatwiej byłoby go przekonwertować programowo po pobraniu zestawu wyników?
Przeczytałem CAST i CONVERT na Microsoft Technet, ale żądanego formatu nie ma na liście, a zmiana formatu daty nie jest opcją.
sql-server
tsql
Kinze
źródło
źródło
Odpowiedzi:
Ograniczanie wielkości kotłów varchar w części godzinnej, której nie chcesz.
źródło
źródło
Począwszy od SQL Server 2012 (oryginalne pytanie dotyczy 2000):
SELECT FORMAT(GetDate(), 'yyyy-MM-dd')
źródło
Formularz, którego szukasz, znajduje się w dokumentacji online książek.
http://msdn.microsoft.com/en-us/library/aa226054(SQL.80).aspx
Na przykład spróbuj wykonać następujące czynności:
źródło
convert
Funkcja ze specyfikacją formatu 120 daje formacie „yyyy-MM-DD hh: mm: ss”, więc po prostu trzeba ograniczyć długość do 10, aby uzyskać tylko część daty:Jednak formatowanie dat jest zazwyczaj lepsze w warstwie prezentacji niż w warstwie bazy danych lub biznesowej. Jeśli zwrócisz datę sformatowaną z bazy danych, kod klienta musi ponownie ją parsować, jeśli będzie musiał wykonać na nim jakiekolwiek obliczenia.
Przykład w języku C #:
źródło
W przypadku RRRRMMDD spróbuj
Testowałem tylko na SQLServer2008.
źródło
Jeszcze jeden sposób ...
źródło
Dla tych, którzy chcieliby również część czasu (ja zrobiłem), może pomóc następujący fragment
źródło
Zrobi także trick bez „odcinania czegokolwiek”.
źródło
Na wypadek, gdyby ktoś chciał to zrobić na odwrót i to znalazł.
Konwertuje to ciąg znaków w niemieckim formacie daty na obiekt daty i godziny.
Dlaczego 104 Zobacz tutaj: http://msdn.microsoft.com/en-us/library/ms187928.aspx
źródło
W łączu przesyłania i konwersji użyj stylu 126 w ten sposób:
CONVERT (varchar(10), DTvalue, 126)
To skraca czas. Wymaganie posiadania go w formacie rrrr-mm-dd oznacza, że musi to być ciąg typu danych i data / godzina.
Szczerze mówiąc, zrobiłbym to na kliencie, chyba że masz dobre powody, aby tego nie robić.
źródło
Jeśli chcesz użyć go jako daty zamiast
varchar
później, nie zapomnij go przekonwertować:źródło
Nie jestem pewien, dlaczego najprostszy sposób został zignorowany / pominięty w powyższych odpowiedziach:
Wolę ten drugi, ponieważ w jakimkolwiek języku mówisz, zrozumiesz, jaka to data!
Również SQL Server zawsze „rozumie” to, gdy wysyłasz to do procedury składowania, niezależnie od tego, jakie formaty regionalne są ustawione na komputerach - zawsze używam pełnego roku (rrrr), nazwy miesiąca (MMM) i formatu 24-godzinnego (HH) na godzinę w moim programowaniu.
źródło
SELECT CONVERT(NVARCHAR(20), GETDATE(), 23)
źródło
Możesz także użyć. Jest to możliwe przy użyciu nowego typu danych
DATE
. Może nie działać we wszystkich poprzednich wersjach, ale znacznie uproszczony do użycia w późniejszej wersji.źródło
Użyłbym:
źródło
źródło
Z SQL Server 2008 możesz to zrobić:
CONVERT(date,getdate())
źródło
Nie musisz robić żadnych dziwnych rzeczy, jeśli chcesz, aby twoja randka była oddzielona ukośnikiem. Po prostu uciec z ukośnikiem. W przeciwnym razie skończysz kropką.
Testowane na SQL Server 2016
źródło
Używanie instrukcji CASE dla każdej funkcji konwersji / rzutowania zawsze działa dla mnie:
Mam nadzieję, że to było pomocne. Chagbert.
źródło
To rozwiązanie działa dla mnie, proste i skuteczne (również z 126)
źródło
Jeśli Twój źródłowy format daty jest zawalony, spróbuj czegoś podobnego do:
źródło
źródło