Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

Funkcja CONVERT

Termin Definicja
Funkcja CONVERT

Funkcja CONVERT umożliwia jawną konwersję wartości między typami danych, z dodatkową kontrolą formatu wyniku.

CONVERT w Transact-SQL: jawna zmiana typu danych

Funkcja CONVERT w Microsoft SQL Server służy do jawnego przekształcania wyrażenia z jednego typu danych na inny. Może konwertować między innymi wartości tekstowe, liczbowe, daty, czas oraz typy binarne. Podstawowa postać wywołania to CONVERT(data_type, expression), a dla typów znakowych można dodatkowo podać długość, na przykład CONVERT(varchar(10), kolumna). Trzeci argument, nazywany parametrem style, określa sposób interpretacji albo prezentacji niektórych wartości, przede wszystkim dat, czasu, liczb pieniężnych i danych binarnych.

Wynik funkcji ma typ wskazany w pierwszym argumencie. Nie oznacza to jednak, że każda konwersja jest możliwa. SQL Server może zgłosić błąd, gdy tekst nie przedstawia poprawnej liczby lub daty, wartość nie mieści się w zakresie typu docelowego albo długość tekstu zostanie ograniczona. Przykładowo konwersja tekstu '2026-08-24' do typu date jest poprawna, natomiast niepoprawny zapis daty może zakończyć wykonanie zapytania błędem konwersji. Dlatego typ docelowy powinien być dobrany do rzeczywistego formatu i zakresu danych.

Składnia oraz style formatowania daty i czasu

Pełniejsza składnia funkcji ma postać CONVERT(data_type [(length)], expression [, style]). Parametr length dotyczy typów o zmiennej długości, takich jak varchar, nvarchar lub varbinary. Dla dat SQL Server udostępnia określone wartości style. Przykładowo styl 103 przedstawia datę jako dd/mm/yyyy, styl 101 jako mm/dd/yyyy, a styl 112 jako zapis bez separatorów: yyyymmdd. Styl 120 odpowiada zapisowi yyyy-mm-dd hh:mi:ss, natomiast styl 121 obejmuje także milisekundy i ma postać yyyy-mm-dd hh:mi:ss.mmm.

Przykładowe wyrażenie CONVERT(char(10), data_utworzenia, 23) zwraca datę w formacie yyyy-mm-dd. Z kolei CONVERT(datetime, '2026-08-24 14:30:00', 120) konwertuje tekst do wartości typu datetime, o ile zapis jest zgodny z oczekiwanym stylem. Styl wpływa na sposób konwersji między tekstem a datą, dlatego powinien być używany świadomie. Format przeznaczony do wyświetlania użytkownikowi nie zawsze jest dobrym formatem do sortowania, porównywania lub zapisywania w systemie. W szczególności zapis yyyymmdd jest jednoznaczny i dobrze nadaje się do porównań tekstowych, ale nadal nie zastępuje właściwego typu daty w kolumnie bazy danych.

Różnica między konwersją danych a formatowaniem wyniku

CONVERT może zarówno zmienić typ wartości, jak i przygotować jej tekstową reprezentację. Te dwa zastosowania należy rozdzielać. Konwersja kolumny tekstowej do date umożliwia operacje datowe, takie jak porównywanie okresów lub obliczanie różnicy dni. Konwersja daty do varchar tworzy natomiast tekst, który może być użyty w raporcie, komunikacie albo wyniku eksportu. Po zamianie daty na tekst wartość przestaje być datą z punktu widzenia dalszych operacji SQL, dlatego nie należy wykonywać takiego formatowania przed filtrowaniem, sortowaniem i obliczeniami, jeżeli nie jest to konieczne.

Istotne jest także uwzględnienie reguł konwersji niejawnej. SQL Server stosuje kolejność pierwszeństwa typów danych i czasami automatycznie próbuje zmienić jeden operand na typ drugiego operandu. Może to prowadzić do błędu albo nieoczekiwanego wyniku, zwłaszcza gdy kolumna tekstowa zawiera wartości mieszane, puste lub niepoprawne. Jawne użycie CONVERT dokumentuje intencję zapytania i pozwala wskazać oczekiwany typ. Nie rozwiązuje jednak problemu błędnych rekordów. W sytuacjach, w których niepoprawna wartość ma być zamieniona na NULL zamiast powodować błąd, SQL Server udostępnia osobną funkcję TRY_CONVERT. Nie należy utożsamiać jej z CONVERT, ponieważ ma inną reakcję na nieudaną konwersję.

Znaczenie CONVERT przy diagnostyce danych w komputerze

Problemy z funkcją CONVERT zwykle nie wynikają z uszkodzenia samego laptopa lub komputera, lecz z niezgodności danych, zapytania albo konfiguracji używanej aplikacji. Objawem może być komunikat o nieudanej konwersji wartości typu varchar do int, date lub datetime. Przy analizie takiego problemu sprawdza się typ kolumny, przykładowe wartości, długości tekstów, kolejność argumentów oraz zastosowany styl daty. Należy również ustalić, czy błąd występuje w zapytaniu, procedurze składowanej, raporcie, imporcie danych czy w warstwie aplikacji korzystającej z SQL Server.

W praktyce przydatne jest porównanie typu źródłowego z typem docelowym i wyszukanie rekordów, których format odbiega od założeń. Trzeba uważać na obcinanie danych przy konwersji do zbyt krótkiego typu znakowego, utratę części ułamkowej przy zmianie typu liczbowego oraz różnice między datetime, datetime2 i datetimeoffset. Samo dopisanie CONVERT do zapytania nie jest naprawą danych. Jeżeli błąd pojawia się na komputerze użytkownika, można sprawdzić wersję programu, sterownik połączenia i dokładny komunikat, ale źródła problemu należy szukać w zgodności zapytania z typami danych obsługiwanymi przez konkretną instancję Microsoft SQL Server.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę