| Termin | Definicja |
|---|---|
| SMALLDATETIME | SMALLDATETIME to typ danych przechowujący datę i czas z dokładnością do minuty, w węższym zakresie niż DATETIME. Zakres wartości i sposób przechowywania SMALLDATETIMESMALLDATETIME jest typem danych dostępnym w Microsoft SQL Server. Przechowuje jednocześnie część daty oraz godzinę, ale jego rozdzielczość kończy się na pełnej minucie. Zakres wartości obejmuje daty od 1 stycznia 1900 roku do 6 czerwca 2079 roku. Ograniczenie zakresu wynika z wewnętrznego sposobu kodowania daty i oznacza, że typ ten nie nadaje się do przechowywania dat wcześniejszych ani późniejszych. Próba zapisania wartości poza zakresem prowadzi do błędu konwersji albo przepełnienia, zależnie od użytego wyrażenia i kontekstu instrukcji. Wartość SMALLDATETIME zajmuje 4 bajty. Wewnętrznie SQL Server wykorzystuje dwie dwubajtowe części: jedną do przechowania liczby dni od daty bazowej 1900-01-01, a drugą do zapisania liczby minut od północy. Typ nie przechowuje informacji o strefie czasowej, przesunięciu UTC ani nazwie lokalnej strefy. Nie zawiera także sekund i ułamków sekund jako samodzielnych elementów wartości. Zaokrąglanie sekund podczas konwersjiNajważniejszą cechą SMALLDATETIME jest automatyczna redukcja dokładności przy konwersji z typu zawierającego sekundy. Po zapisaniu wartości sekundy są zawsze prezentowane jako Zaokrąglenie może zmienić również dzień. Wartość znajdująca się pod koniec doby, na przykład 23:59:30, po konwersji staje się wartością odpowiadającą północy następnego dnia. Z tego powodu porównywanie danych po konwersji nie powinno zakładać, że data kalendarzowa zawsze pozostanie identyczna. Jeżeli aplikacja otrzymuje czas z dokładnością do sekund lub milisekund, zapisanie go w kolumnie SMALLDATETIME może spowodować utratę informacji, a w granicznym przypadku także przesunięcie daty. Konwersje, porównania i dobór typu kolumnySMALLDATETIME może być używany w kolumnach tabel, zmiennych, parametrach procedur oraz wyrażeniach języka T-SQL. Wartości można jawnie konwertować za pomocą Podczas porównań SQL Server może wykonać niejawną konwersję typów zgodnie z regułami pierwszeństwa typów danych. Ma to znaczenie, gdy SMALLDATETIME jest porównywany z wartością Dobór SMALLDATETIME ma sens wtedy, gdy zakres dat oraz dokładność jednej minuty odpowiadają rzeczywistemu modelowi danych, na przykład przy zapisie harmonogramów lub zdarzeń raportowanych minutowo. Jeżeli wymagane są sekundy, milisekundy, daty poza zakresem 1900–2079 albo obsługa czasu UTC z przesunięciem, należy użyć innego typu dostępnego w SQL Server. Rozpoznawanie problemów z danymi czasowymiObjawem nieprawidłowego doboru SMALLDATETIME może być powtarzanie się wielu rekordów z tą samą minutą, znikanie sekund po zapisie albo różnica jednej minuty widoczna po odczycie danych. Przy analizie należy sprawdzić definicję kolumny w tabeli, typ parametrów procedur i funkcje używane podczas importu. Szczególnej uwagi wymagają wartości generowane przez funkcje zwracające dokładniejszy typ, takie jak W diagnostyce warto porównać wartość źródłową z wartością odczytaną po zapisie, sprawdzić sekundy przed konwersją oraz zweryfikować rekordy znajdujące się przy granicy północy. Należy także przeanalizować zakres dat w danych i upewnić się, że nie występują wartości wymagające roku wcześniejszego niż 1900 albo późniejszego niż 2079. Warszawskie Pogotowie Komputerowe wykonuje profesjonalną naprawę laptopów, komputerów PC i podzespołów, a analiza problemów z aplikacją korzystającą z SQL Server powinna obejmować zarówno konfigurację programu, jak i rzeczywiste typy oraz wartości zapisane w bazie. |