Pracuję nad zapytaniem w Sql Server 2005, w którym muszę przekonwertować wartość w DateTime
zmiennej na varchar
zmienną w yyyy-mm-dd
formacie (bez części czasu). Jak mogę to zrobić?
303
Pracuję nad zapytaniem w Sql Server 2005, w którym muszę przekonwertować wartość w DateTime
zmiennej na varchar
zmienną w yyyy-mm-dd
formacie (bez części czasu). Jak mogę to zrobić?
CONVERT
patrz dokumentacja MSDN .Odpowiedzi:
Z Microsoft Sql Server:
źródło
LEFT(.., 10)
zamiastCONVERT(CHAR(10), ...)
? Również osoby pracujące z nowszymi wersjami SQL Servera niż 2005 (!) Powinny sprawdzić odpowiedź Zar Shardana sugerującą rozwiązanie oparte naFORMAT(date_value, format_string)
funkcji.FORMAT()
jest zbyt wolny w stosunku doconvert(char(10),...)
Oto kilka testów SQL dla wszystkich stylów.
Oto wynik
nvarchar(max)
Skróć czas, aby skrócić czas. Na przykład:wyjścia:
źródło
dd-mm
lubjun - 28
. Jest jakaś opcja?Spróbuj wykonać następujące czynności:
Aby uzyskać pełną datę i godzinę, a nie tylko datę:
Zobacz stronę konwersji stylów:
http://msdn.microsoft.com/en-us/library/ms187928.aspx
LUB
Funkcja SQL Server CONVERT ()
źródło
SQL Server 2012 ma nową funkcję, FORMAT: http://msdn.microsoft.com/en-us/library/ee634924.aspx
i możesz użyć niestandardowych ciągów formatu daty i godziny: http://msdn.microsoft.com/en-us/library/ee634398.aspx
Te strony sugerują, że jest on również dostępny w SQL2008R2, ale nie mam jednego przydatnego do przetestowania, jeśli tak jest.
Przykładowe użycie (australijska data / godzina):
źródło
Możesz użyć
DATEPART(DATEPART, VARIABLE)
. Na przykład:źródło
Albo
Cast
alboConvert
:Składnia dla
CAST
:Składnia dla
CONVERT
:http://msdn.microsoft.com/en-us/library/ms187928.aspx
Właściwie odkąd poprosiłeś o określony format:
źródło
- To daje czas jako 0 w formacie „rrrr-mm-dd 00: 00: 00.000”
źródło
Z Microsoft SQL Server:
Użyj składni dla CONVERT:
Przykład:
Więcej informacji o stylu można znaleźć tutaj: MSDN - Cast and Convert (Transact-SQL) .
źródło
Próbować:
Więcej na temat wskazówek MS SQL
źródło
Spróbuj wykonać następujące czynności:
Następnie musisz zastąpić „.” z "-".
Oto strona, która pomaga http://www.mssqltips.com/tip.asp?tip=1145
źródło
Mam ustaloną długość danych,
char(10)
jak chcesz określonego formatu ciągu.źródło
OP wspomniał o formacie daty i godziny . Dla mnie część czasu przeszkadza.
Myślę, że trochę łatwiej jest usunąć część czasu (przesyłając datetime do tej pory) przed formatowaniem.
źródło
Tak to robię:
CONVERT(NVARCHAR(10), DATE1, 103) )
źródło
Możesz przekonwertować datę na wiele formatów, składnia jest prosta w użyciu:
W twoim przypadku właśnie przekonwertowałem i ograniczyłem rozmiar według nvarchar (10) w następujący sposób:
Zobacz więcej na: http://www.w3schools.com/sql/func_convert.asp
Innym rozwiązaniem (jeśli twoja data jest datą) jest prosty CAST :
źródło
Wypróbuj ten SQL:
źródło
W przypadku programu SQL Server 2008+ można używać CONVERT i FORMAT jednocześnie.
Na przykład znacznik czasu w stylu europejskim (np. Niemcy):
źródło
Nie powiedziałeś, która baza danych, ale dzięki mysql jest to prosty sposób na uzyskanie daty ze znacznika czasu (a konwersja typu varchar powinna nastąpić automatycznie):
źródło
Najkrótsza i najprostsza droga to:
źródło
źródło
źródło
Napisz funkcję
źródło
da
05/05/2020 10:41:05 AM
w wynikuźródło
Nie mówisz w jakim języku, ale zakładam,
C#/.NET
że ma on rodzimyDateTime
typ danych. W takim przypadku wystarczy przekonwertować go za pomocąToString
metody i użyć specyfikatora formatu, takiego jak:Ostrzegam jednak przed użyciem tego w zapytaniu do bazy danych lub w połączeniu z instrukcją SQL. Bazy danych wymagają użycia określonego ciągu formatującego. Lepiej wyzeruj część czasu i użyj DateTime jako parametru SQL, jeśli to właśnie próbujesz osiągnąć.
źródło