Dateadd (transact-sql)

Вираз, який перетвориться до типу int і додається до компоненту datepart дати date. Допускаються змінні.

Якщо вказати значення з десятковим дробом, дріб усікається, а не округляється.

Вираз, який можна привести до значення типу time. date. smalldatetime. datetime. datetime2 або datetimeoffset. Аргумент date може бути виразом, виразом стовпчика, яка визначається користувачем змінної або строковим літералом. Якщо вираз є строковим літералом, його результатом має бути значення типу datetime. Щоб уникнути неоднозначності використовуйте чотиризначну запис року. Додаткові відомості про двозначному позначенні року см. В розділі Налаштування параметра конфігурації сервера two digit year cutoff.

Тип повертаються даних є типом аргументу date. за винятком строкових літералів.

Тип повертаються даних для строкового литерала має тип datetime. Якщо строковий літерал має більше трьох позицій часток секунди (. Nnn) або містить компонент зсуву часового поясу, виникне помилка.

Функції dayofyear. day і weekday повертають однакове значення.

Кожен вираз datepart і його короткі форми повертають одне і те ж значення.

Аргумент number не може виходити за діапазон типу даних int. У наступних інструкціях аргумент number перевищує діапазон типу даних int на 1. Видається наступне повідомлення про помилку: "Msg 8115, Level 16, State 2, Line 1. Arithmetic overflow error converting expression to data type int."

Аргумент date не може бути збільшений до значення, що виходить за діапазон відповідного типу даних. У наступних інструкціях значення number буде додано до величини date. в результаті перевищується діапазон типу даних date. Видається наступне повідомлення про помилку: "Msg 517, Level 16, State 1, Line 1 Adding a value to a 'datetime' column caused overflow."

Значення секунд дати типу smalldatetime завжди одно 00. Якщо аргумент date має тип smalldatetime. діють такі умови.

Якщо datepart має значення second і number лежить між -30 і +29, додавання не виконується.

Якщо datepart має значення second і number менш -30 або більше +29, виконується додавання часу, починаючи з однієї хвилини.

Якщо datepart має значення millisecond і number лежить між -30001 і +29998, додавання не виконується.

Якщо datepart має значення millisecond і number менш -30001 або більш +29998, виконується додавання часу, починаючи з однієї хвилини.

Функція DATEADD може використовуватися в пропозиціях SELECT <список>, WHERE, HAVING, GROUP BY і ORDER BY.

Точність в частках секунди

Використання при додаванні в якості аргументу datepart значень microsecond або nanosecond для типів даних date. smalldatetime. date і datetime не допускається.

Мілісекунди мають точність 3 знаки (0,123), мікросекунди - 6 знаків (0,123456), наносекунди - 9 знаків (0,123456789). Типи даних time. datetime2 і datetimeoffset мають максимальну точність 7 знаків (0,1234567). Якщо аргументом datepart є nanosecond. аргумент number повинен мати значення 100 перед збільшенням дати date на частки секунди. Значення аргументу number. що знаходиться в межах 1 до 49, округляється до 0, а значення від 50 до 99 округляється до 100.

Наступні інструкції додають частину дати datepart. millisecond. microsecond або nanosecond.

Схожі статті