Типи даних DATETIME і SMALLDATETIME використовуються для збереження комбінацій дати і часу. При відображенні даних, збережених за допомогою типів DATETIME SMALLDATETIME SQL Server автоматично форматує їх, щоб представити у звичному форматі. Для роботи з даними цих типів можна використовувати також спеціальні функції дати і часу.
Якщо зберігати дату і час за допомогою типів CHAR, VARCHAR чи інших числових типів, то при відображенні вони не будуть автоматично форматуватись.
Тип DATЕTIME— це перший тип даних для представлення дати і часу, який можна використовувати для збереження значень в полях. Цей тип дозволяє зберігати дату і час в діапазоні від 01.01.1753 до 31.12.9999 н.е.
Для збереження значень типу DATETIME виділяється 8 байт. SQL Server використовує перші 4 байти для збереження кількості днів до чи після базової дати, 1 січня 1900 року. Від’ємні числа говорять про те, що подія відбулась до 1 січня 1900 року, а додатні — після цієї дати. В наступних 4 байтах зберігається час, який вимірюється в мілісекундах від початкової точки — 12 годин.
При виборі значень, що зберігаються за допомогою типу DATETIME, вони будуть відтворюватись в стандартному форматі MM DD YYYY hh:ni AM/PM. Наприклад, Sep 23 1949 11:14 PM. Немає значення, в якому порядку буде вказана дата і час; в будь-якому випадку SQL Server розпізнає їх і збереже значення правильно.
При введенні значень типу DATETIME можна використовувати для дати символи верхнього чи нижнього регістру і залишати між місяцем, днем, роком один чи більше “пробілів”. Якщо вивести час без дати, то буде прийнята стандартна дата, 1 січня 1900 року. Якщо ввести дату без часу, то буде прийнято стандартний час, 12:00AM (24:00). Якщо опустити і дату, і час, то буде введено стандартне значення, 1 січня 1900 12:00АМ (1 січня 1900 24:00).
Дату можна вводити декількома способами. SQL Server розпізнає дату і зберігає її. Дату можна вказати в символьному форматі, використовуючи або скорочену, або повну назву місяця. Між днем і роком можна поставити кому або опустити її.
Параметр DATEFORMAT команди SET не використовується, якщо вводиться місяць в символьному форматі. Якщо при установці SQL Server була вибрана English (USA) мова, то стандартний порядок відтворення значень типу DATETIME наступний: місяць, день, рік. Для зміни стандартного порядку відтворення дати в значенні типу DATETIME використовується команда SET DATEFORMAT.
При використанні числового формату значень DATETIME дозволяється використовувати символи: похила лінія (/), дефіс(-) і крапка (.) в якості проміжків між різними одиницями часу.
Тип SMALLDATETIME — це другий тип даних для представлення дати і часу, який можна використовувати для збереження значення в полях. Цей тип дозволяє зберігати дату і час в діапазоні від 01.01.1900 до 06.06.2079 н. е.
Для збереження значення типу SMALLDATETIME виділяється 4 байти. SQL Server використовує 2 байти для збереження числа днів, які пройшли після базової дати, тобто 1 січня 1900 року. В інших двох байтах зберігається час, який вимірюється у хвилинах, які наступили після опівночі. Точність збереження часу в даних типу SMALLDATETIME становить одну хвилину. Тип SMALLDATETIME використовується при збереженні даних в більш вузькому діапазоні і з меншою точністю, в порівнянні з типом DATETIME.
У прикладі для одного поля визначений тип DATETIME, а для другого — SMALLDATETIME. Після створення таблиці в кожне поле були введені мінімальні значення, які відповідають кожному з заданих типів даних.