Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

DATEADD (Transact-SQL) - SQL Server

  1. синтаксис Syntax
  2. аргументи Arguments
  3. Типи повертаються даних Return types
  4. Значення, що повертається Return Value
  5. Аргумент number number Argument
  6. Точність в частках секунди Fractional seconds precision
  7. Зсув часового поясу Time zone offset
  8. приклади Examples
  9. Вказівка ​​в якості аргументу number ранжирують функцій Specifying ranking functions as number
  10. Див. Також розділ See also

Наша взаимовыгодная связь https://banwar.org/

ОБЛАСТЬ ЗАСТОСУВАННЯ: ОБЛАСТЬ ЗАСТОСУВАННЯ:   SQL Server   База даних SQL Azure   Сховище даних SQL Azure   Parallel Data Warehouse APPLIES TO:   SQL Server   Azure SQL Database   Azure SQL Data Warehouse   Parallel Data Warehouse   Ця функція додає вказане значення number (ціле число зі знаком) до заданого аргументу datepart вхідного значення date, а потім повертає це змінене значення SQL Server База даних SQL Azure Сховище даних SQL Azure Parallel Data Warehouse APPLIES TO: SQL Server Azure SQL Database Azure SQL Data Warehouse Parallel Data Warehouse

Ця функція додає вказане значення number (ціле число зі знаком) до заданого аргументу datepart вхідного значення date, а потім повертає це змінене значення. This function adds a specified number value (as a signed integer) to a specified datepart of an input date value , and then returns that modified value.

Огляд всіх типів даних і функцій дати і часу в мові Transact-SQL Transact-SQL см. В статті Типи даних і функції дати і часу (Transact-SQL) . See Date and Time Data Types and Functions (Transact-SQL) for an overview of all Transact-SQL Transact-SQL date and time data types and functions.

Синтаксичні позначення в Transact-SQL   Transact-SQL Syntax Conventions Синтаксичні позначення в Transact-SQL Transact-SQL Syntax Conventions

синтаксис Syntax

DATEADD (datepart, number, date)

аргументи Arguments

datepart datepart
Компонент дати date, до якого DATEADD додає integer number. The part of date to which DATEADD adds an integer number . У наведеній нижче таблиці перераховані всі допустимі аргументи datepart. This table lists all valid datepart arguments.

Примітка

DATEADD не приймає еквівалентні змінні, визначені користувачем, для аргументів datepart. DATEADD does not accept user-defined variable equivalents for the datepart arguments.

datepart datepart

Скорочення Abbreviations year year yy, yyyy yy, yyyy quarter quarter qq, q qq, q month month mm, m mm, m dayofyear dayofyear dy, y dy, y day day dd, d dd, d week week wk, ww wk , ww weekday weekday dw, w dw, w hour hour чч hh minute minute mi, n mi, n second second ss, s ss, s millisecond millisecond ms ms microsecond microsecond mcs mcs nanosecond nanosecond ns ns

number number
Вираз, який дозволяється в тип int , Що додається DATEADD до компоненту datepart дати date. An expression that can resolve to an int that DATEADD adds to a datepart of date. DATEADD приймає визначені користувачем значення змінних для number. DATEADD accepts user-defined variable values for number. DATEADD усечет вказане значення number, що має десяткову дріб. DATEADD will truncate a specified number value that has a decimal fraction . У цій ситуації значення number НЕ округляється. It will not round the number value in this situation .

date date
Вираз, який може бути дозволено в одне з наступних значень. An expression that can resolve to one of the following values:

  • date date
  • datetime datetime
  • datetimeoffset datetimeoffset
  • datetime2 datetime2
  • smalldatetime smalldatetime
  • time time

Для date DATEADD буде приймати стовпець вираження, вираження, строковий літерал чи визначену користувачем змінну. For date, DATEADD will accept a column expression, expression, string literal, or user-defined variable. Значення строкового литерала має вирішуватися в datetime. A string literal value must resolve to a datetime . Щоб уникнути неоднозначності використовуйте чотиризначну запис року. Use four-digit years to avoid ambiguity issues. Відомості про двозначному позначенні року см. В статті Налаштування параметра конфігурації сервера two digit year cutoff . See Configure the two digit year cutoff Server Configuration Option for information about two-digit years.

Типи повертаються даних Return types

Тип даних значення, що повертається для цього методу є динамічним. The return value data type for this method is dynamic. Тип значення, що повертається залежить від типу аргументу, переданого в date. The return type depends on the argument supplied for date. Якщо значення для date є строковим літералом дати, DATEADD повертає значення datetime. If the value for date is a string literal date , DATEADD returns a datetime value. Якщо для date надається інший тип допустимих вхідних даних, DATEADD повертає той же тип даних. If another valid input data type is supplied for date, DATEADD returns the same data type. Якщо строковий літерал має більше трьох позицій часток секунди (.nnn) або якщо строковий літерал містить частину зміщення часового поясу, DATEADD видасть помилку. DATEADD raises an error if the string literal seconds scale exceeds three decimal place positions (.nnn) or if the string literal contains the time zone offset part.

Значення, що повертається Return Value

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

Кожен вираз datepart і його короткі форми повертають одне і те ж значення. Each datepart and its abbreviations return the same value .

Якщо вірні такі умови: If the following are true:

  • datepart має значення month; datepart is month
  • в місяці date більше днів, ніж в повернутому місяці; the date month has more days than the return month
  • день date не існує в цьому місяці; the date day does not exist in the return month

то DATEADD повертає останній день повертається місяці. Then, DATEADD returns the last day of the return month. Наприклад, у вересні 30 (тридцять) днів, тому ці інструкції повертають 2006-09-30 00: 00: 00.000: For example, September has 30 (thirty) days; therefore, these statements return 2006-09-30 00: 00: 00.000:

SELECT DATEADD (month, 1, '20060830'); SELECT DATEADD (month, 1, '20060831');

Аргумент number number Argument

Аргумент number не може виходити за діапазон типу даних int. У наведених нижче інструкціях аргумент number перевищує діапазон типу даних int на 1. The number argument can not exceed the range of int . In the following statements, the argument for number exceeds the range of int by 1. Обидві ці інструкції повертають повідомлення про помилку: "Msg 8115, Level 16, State 2, Line 1. Arithmetic overflow error converting expression to data type int ." These statements both return the following error message: "Msg 8115, Level 16, State 2, Line 1. Arithmetic overflow error converting expression to data type int."

SELECT DATEADD (year, 2147483648, '20060731'); SELECT DATEADD (year, -2147483649, '20060731');

DATEADD не братиме аргумент date, збільшений до значення, що виходить за діапазон відповідного типу даних. DATEADD will not accept a date argument incremented to a value outside the range of its data type . У наведених нижче інструкціях значення number, доданий до значення date, перевищує діапазон типу даних date. In the following statements, the number value added to the date value exceeds the range of the date data type . DATEADD повертає наступне повідомлення про помилку: "Msg 517, Level 16, State 1, Line 1 Adding a value to a 'datetime' column caused overflow". DATEADD returns the following error message: "Msg 517, Level 16, State 1, Line 1 Adding a value to a 'datetime' column caused overflow."

SELECT DATEADD (year, 2147483647, '20060731'); SELECT DATEADD (year, -2147483647, '20060731');

Значення секунд дати типу smalldatetime завжди дорівнює 00. The seconds part of a smalldatetime value is always 00. Для значення date типу smalldatetime діють такі умови. For a smalldatetime date value, the following apply:

  • Для частини дати datepart секунди second і значення number в діапазоні від -30 до +29 DATEADD не вносить жодних змін. For a datepart of second, and a number value between -30 and +29, DATEADD makes no changes.
  • Для частини дати datepart секунди second і значення number менше -30 або більше +29 DATEADD виконує додавання, починаючи з однієї хвилини. For a datepart of second, and a number value less than -30, or more than +29, DATEADD performs its addition beginning at one minute.
  • Для частини дати datepart мілісекунди millisecond і значення number в діапазоні від -30 001 до + 29 998 DATEADD не вносить жодних змін. For a datepart of millisecond and a number value between -30001 and +29998, DATEADD makes no changes.
  • Для частини дати datepart мілісекунди millisecond і значення number менше -30 001 або більше +29 998 DATEADD виконує додавання, починаючи з однієї хвилини. For a datepart of millisecond and a number value less than -30001, or more than +29998, DATEADD performs its addition beginning at one minute.

Використовуйте DATEADD в наступних пропозиціях. Use DATEADD in the following clauses:

  • GROUP BY GROUP BY
  • HAVING HAVING
  • ORDER BY ORDER BY
  • SELECT <list> SELECT <list>
  • WHERE WHERE

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

DATEADD не допускає використання при додаванні в якості аргументу datepart значень microsecond або nanosecond для типів даних date: smalldatetime, date і datetime. DATEADD does not allow addition for a datepart of microsecond or nanosecond for date data types smalldatetime , date, and datetime.

Мілісекунди мають точність 3 знаки (0,123), мікросекунди - 6 знаків (0,123456), наносекунди - 9 знаків (0,123456789). Milliseconds have a scale of 3 (.123), microseconds have a scale of 6 (.123456), and nanoseconds have a scale of 9 (.123456789). Типи даних time, datetime2 і datetimeoffset мають максимальну точність 7 знаків (0,1234567). The time, datetime2, and datetimeoffset data types have a maximum scale of 7 (.1234567). Якщо аргументом datepart є nanosecond, аргумент number повинен мати значення 100 перед збільшенням дати date на частки секунди. For a datepart of nanosecond, number must be 100 before the fractional seconds of date increase. number від 1 до 49 округляється до 0, а number від 50 до 99 округляється до 100. A number between 1 and 49 will round down to 0, and a number from 50 to 99 rounds up to 100.

Ці інструкції додають частину дати datepart: millisecond, microsecond або nanosecond. These statements add a datepart of millisecond, microsecond, or nanosecond.

DECLARE @ datetime2 datetime2 = '2007-01-01 13: 10: 10.1111111'; SELECT '1 millisecond', DATEADD (millisecond, 1, @ datetime2) UNION ALL SELECT '2 milliseconds', DATEADD (millisecond, 2, @ datetime2) UNION ALL SELECT '1 microsecond', DATEADD (microsecond, 1, @ datetime2) UNION ALL SELECT '2 microseconds', DATEADD (microsecond, 2, @ datetime2) UNION ALL SELECT '49 nanoseconds ', DATEADD (nanosecond, 49, @ datetime2) UNION ALL SELECT '50 nanoseconds', DATEADD (nanosecond, 50, @ datetime2) UNION ALL SELECT '150 nanoseconds', DATEADD (nanosecond, 150, @ datetime2);

Нижче наводиться результуючий набір. Here is the result set.

1 millisecond 2007-01-01 13: 10: 10.1121111 2 milliseconds 2007-01-01 13: 10: 10.1131111 1 microsecond 2007-01-01 13: 10: 10.1111121 2 microseconds 2007-01-01 13: 10: 10.1111131 49 nanoseconds 2007-01-01 13: 10: 10.1111111 50 nanoseconds 2007-01-01 13: 10: 10.1111112 150 nanoseconds 2007-01-01 13: 10: 10.1111113

Зсув часового поясу Time zone offset

DATEADD не допускає додавання для зміщення часового поясу. DATEADD does not allow addition for time zone offset.

приклади Examples

Кожна з цих інструкцій збільшує частину дати datepart на інтервал, рівний 1. Each of these statements increments datepart by an interval of 1:

DECLARE @ datetime2 datetime2 = '2007-01-01 13: 10: 10.1111111'; SELECT 'year', DATEADD (year, 1, @ datetime2) UNION ALL SELECT 'quarter', DATEADD (quarter, 1, @ datetime2) UNION ALL SELECT 'month', DATEADD (month, 1, @ datetime2) UNION ALL SELECT ' dayofyear ', DATEADD (dayofyear, 1, @ datetime2) UNION ALL SELECT' day ', DATEADD (day, 1, @ datetime2) UNION ALL SELECT' week ', DATEADD (week, 1, @ datetime2) UNION ALL SELECT' weekday ' , DATEADD (weekday, 1, @ datetime2) UNION ALL SELECT 'hour', DATEADD (hour, 1, @ datetime2) UNION ALL SELECT 'minute', DATEADD (minute, 1, @ datetime2) UNION ALL SELECT 'second', DATEADD (second, 1, @ datetime2) UNION ALL SELECT 'millisecond', DATEADD (millisecond, 1, @ datetime2) UNION ALL SELECT 'microsecond', DATEADD (microsecond, 1, @ datetime2) UNION ALL SELECT 'nanosecond', DATEADD (nanosecond , 1, @ datetime2);

Нижче наводиться результуючий набір. Here is the result set.

Year 2008-01-01 13: 10: 10.1111111 quarter 2007-04-01 13: 10: 10.1111111 month 2007-02-01 13: 10: 10.1111111 dayofyear 2007-01-02 13: 10: 10.1111111 day 2007-01-02 13: 10: 10.1111111 week 2007-01-08 13: 10: 10.1111111 weekday 2007-01-02 13: 10: 10.1111111 hour 2007-01-01 14: 10: 10.1111111 minute 2007-01-01 13: 11: 10.1111111 second 2007-01-01 13: 10: 11.1111111 millisecond 2007-01-01 13: 10: 10.1121111 microsecond 2007-01-01 13: 10: 10.1111121 nanosecond 2007-01-01 13: 10: 10.1111111

Кожна з цих інструкцій збільшує частину дати datepart на число number, досить велика, щоб також збільшити наступну частину datepart дати date. Each of these statements increments datepart by a number large enough to additionally increment the next higher datepart of date :

DECLARE @ datetime2 datetime2; SET @ datetime2 = '2007-01-01 01: 01: 01.1111111'; --Statement Result ---------------------------------------------- --------------------- SELECT DATEADD (quarter, 4, @ datetime2); --2008-01-01 01: 01: 01.1111111 SELECT DATEADD (month, 13, @ datetime2); --2008-02-01 01: 01: 01.1111111 SELECT DATEADD (dayofyear, 365, @ datetime2); --2008-01-01 01: 01: 01.1111111 SELECT DATEADD (day, 365, @ datetime2); --2008-01-01 01: 01: 01.1111111 SELECT DATEADD (week, 5, @ datetime2); --2007-02-05 01: 01: 01.1111111 SELECT DATEADD (weekday, 31, @ datetime2); --2007-02-01 01: 01: 01.1111111 SELECT DATEADD (hour, 23, @ datetime2); --2007-01-02 00: 01: 01.1111111 SELECT DATEADD (minute, 59, @ datetime2); --2007-01-01 02: 00: 01.1111111 SELECT DATEADD (second, 59, @ datetime2); --2007-01-01 01: 02: 00.1111111 SELECT DATEADD (millisecond, 1, @ datetime2); --2007-01-01 01: 01: 01.1121111

У цих прикладах вираження різного типу використовуються як аргументи для параметрів number і date. These examples use different types of expressions as arguments for the number and date parameters . У прикладах використовується база даних AdventureWorks. The examples use the AdventureWorks database.

У цьому прикладі до кожного значення в стовпці 2 додається OrderDate (два) дні, щоб отримати новий стовпець з ім'ям PromisedShipDate. This example adds 2 (two) days to each value in the OrderDate column, to derive a new column named PromisedShipDate:

SELECT SalesOrderID, OrderDate, DATEADD (day, 2, OrderDate) AS PromisedShipDate FROM Sales.SalesOrderHeader;

Частковий результуючий набір має наступний вигляд: A partial result set:

SalesOrderID OrderDate PromisedShipDate ------------ ----------------------- ------------ ----------- 43659 2005-07-01 00: 00: 00.000 2005-07-03 00: 00: 00.000 43660 2005-07-01 00: 00: 00.000 2005-07-03 00: 00: 00.000 43661 2005-07-01 00: 00: 00.000 2005-07-03 00: 00: 00.000 ... 43702 2005-07-02 00: 00: 00.000 2005-07-04 00: 00: 00.000 43703 2005 -07-02 00: 00: 00.000 2005-07-04 00: 00: 00.000 43704 2005-07-02 00: 00: 00.000 2005-07-04 00: 00: 00.000 43705 2005-07-02 00:00: 00.000 2005-07-04 00: 00: 00.000 43706 2005-07-03 00: 00: 00.000 2005-07-05 00: 00: 00.000 ... 43711 2005-07-04 00: 00: 00.000 2005-07- 06 00: 00: 00.000 43712 2005-07-04 00: 00: 00.000 2005-07-06 00: 00: 00.000 ... 43740 2005-07-11 00: 00: 00.000 2005-07-13 00:00: 00.000 43741 2005-07-12 00: 00: 00.000 2005-07-14 00: 00: 00.000

У цьому прикладі в якості аргументів number і date вказуються змінні. This example specifies user-defined variables as arguments for number and date:

DECLARE @days int = 365, @datetime datetime = '2000-01-01 01: 01: 01.111'; / * 2000 was a leap year * /; SELECT DATEADD (day, @days, @datetime);

Нижче наводиться результуючий набір. Here is the result set.

----------------------- 2000-12-31 01: 01: 01.110 (1 row (s) affected)

У цьому прикладі для аргументу date вказано значення SYSDATETIME. This example specifies SYSDATETIME for date. Точне значення, що повертається залежить від дня та часу виконання інструкції. The exact value returned depends on the day and time of statement execution:

SELECT DATEADD (month, 1, SYSDATETIME ());

Нижче наводиться результуючий набір. Here is the result set.

--------------------------- 2013-02-06 14: 29: 59.6727944 (1 row (s) affected)

У цьому прикладі в якості аргументів для number і date використовуються скалярні вкладені запити MAX (ModifiedDate). This example uses scalar subqueries, MAX (ModifiedDate), as arguments for number and date. (SELECT TOP 1 BusinessEntityID FROM Person.Person) є штучним аргументом для числового параметра, що показує спосіб вибору аргументу number зі списку значень. (SELECT TOP 1 BusinessEntityID FROM Person.Person) serves as an artificial argument for the number parameter , to show how to select a number argument from a value list .

SELECT DATEADD (month, (SELECT TOP 1 BusinessEntityID FROM Person.Person), (SELECT MAX (ModifiedDate) FROM Person.Person));

У цьому прикладі в якості аргументів number і date використовується числове вираз (- (10/2)), унарні оператори (-), арифметичний оператор (/) І скалярні системні функції (SYSDATETIME). This example uses a numeric expression (- (10/2)), unary operators (-), an arithmetic operator (/), And scalar system functions (SYSDATETIME) as arguments for number and date.

SELECT DATEADD (month, - (10/2), SYSDATETIME ());

Вказівка ​​в якості аргументу number ранжирують функцій Specifying ranking functions as number

У цьому прикладі в якості аргументу number використовується ранжир функція. This example uses a ranking function as an argument for number .

SELECT p.FirstName, p.LastName, DATEADD (day, ROW_NUMBER () OVER (ORDER BY a.PostalCode), SYSDATETIME ()) AS 'Row Number' FROM Sales.SalesPerson AS s INNER JOIN Person.Person AS p ON s. BusinessEntityID = p.BusinessEntityID INNER JOIN Person.Address AS a ON a.AddressID = p.BusinessEntityID WHERE TerritoryID IS NOT NULL AND SalesYTD <> 0;

У цьому прикладі в якості аргументу number використовується агрегатна віконна функція. This example uses an aggregate window function as an argument for number .

SELECT SalesOrderID, ProductID, OrderQty, DATEADD (day, SUM (OrderQty) OVER (PARTITION BY SalesOrderID), SYSDATETIME ()) AS 'Total' FROM Sales.SalesOrderDetail WHERE SalesOrderID IN (43659,43664); GO

Див. Також розділ See also

Функції CAST і CONVERT (Transact-SQL) CAST and CONVERT (Transact-SQL)

Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: