Транкейт sql: Minimum Permissions for SQL Server TRUNCATE TABLE

Содержание

TRUNCATE TABLE оператор MySQL — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

В этом учебном пособии вы узнаете, как использовать MySQL оператор TRUNCATE TABLE с синтаксисом и примерами.

Описание

TRUNCATE TABLE используется для очищения всех записей из таблицы в MySQL. Он выполняет ту же функцию, что и оператор DELETE, без предложения WHERE.

Предупреждение. Если вы полностью очищаете таблицу, то оператор TRUNCATE TABLE нельзя откатить.

Синтаксис

Синтаксис TRUNCATE TABLE в MySQL:
TRUNCATE TABLE [database_name.]table_name;

Параметры или аргументы

database_name — необязательный. Если указан, то это имя базы данных.
table_name — таблица, которую вы хотите очистить.

Примечание

  • Когда вы очищаете таблицу, счетчики AUTO_INCREMENT в таблице будут сброшены.
  • MySQL очищает таблицу, удаляя и создавая таблицу вновь. Таким образом, триггеры DELETE для таблицы не срабатывают во время очистки.
  • Начиная с MySQL 5.5, вы не можете очистить таблицу InnoDB, на которую ссылается внешний ключ в другой таблице.
  • Начиная с MySQL 5.6, вы не можете очистить таблицу NDB, на которую ссылается внешний ключ в другой таблице.

Пример

В MySQL очистка таблицы — это быстрый способ очистить записи из таблицы, если вам не нужно беспокоиться об откате. В большинстве случаев MySQL обрабатывает процесс очистки таблицы несколько иначе, чем другие базы данных, такие как Oracle или SQL Server.

Рассмотрим пример использования TRUNCATE TABLE в MySQL.
Например:

TRUNCATE TABLE customers;

TRUNCATE TABLE customers;

В этом примере очищается таблица customers, и удаляется все записи из этой таблицы.
Он будет эквивалентен следующему оператору DELETE в MySQL:

Оба этих оператора приведут к удалению всех данных из таблицы customers. Основное различие между ними состоит в том, что оператор DELETE вы можете откатить, если выберете, но вы не сможете откатить оператор TRUNCATE TABLE. Так что будьте предельно внимательны.

Рассмотрим еще один пример, где мы используем префикс имени таблицы с именем базы данных.
Например:

TRUNCATE TABLE best.products;

TRUNCATE TABLE best.products;

В этом примере очищается таблица, называемая products в базе данных best.

Инструкция TRUNCATE TABLE в Transact-SQL | Info-Comp.ru

В Microsoft SQL Server для удаления данных из таблицы можно использовать инструкцию DELETE, но также можно использовать и инструкцию TRUNCATE TABLE, поэтому сегодня мы поговорим о том, чем отличается TRUNCATE TABLE от DELETE и какие преимущества нам дает эта инструкция.

Если у Вас есть таблица в БД, данные которой Вы (или пользователи) периодически полностью удаляете с помощью инструкции DELETE, то данный материал будет Вам интересен, так как в нем мы рассмотрим альтернативную возможность удаления данных, а именно инструкцию TRUNCATE TABLE, которая в некоторых случаях будет предпочтительней, чем DELETE.

Что такое TRUNCATE TABLE?

TRUNCATE TABLE – это SQL инструкция в языке Transact-SQL, которая удаляет все строки в таблице, не записывая в журнал транзакций удаление отдельных строк данных. TRUNCATE TABLE похожа на инструкцию DELETE без предложения WHERE, но она выполняется быстрее и требует меньше ресурсов.

Преимущества TRUNCATE TABLE и отличия от DELETE

  • TRUNCATE TABLE требуется меньший объем журнала транзакций, так как она в отличие от инструкции DELETE не заносит в журнал транзакций запись для каждой удаляемой строки, напомню что DELETE производит удаление по одной строке отражая все действия в журнале транзакций;
  • TRUNCATE TABLE выполняется быстрее по сравнению с инструкцией DELETE также за счет меньшего использования журнала транзакций;
  • Используется меньшее количество блокировок. Инструкция TRUNCATE TABLE в отличие от инструкции DELETE блокирует таблицу и страницу, а не каждую строку таблицы;
  • Если инструкция TRUNCATE TABLE применяется к таблице, которая содержит столбец идентификаторов, счетчик этого столбца сбрасывается до начального значения. Инструкция DELETE не сбрасывает счетчик столбца идентификаторов;
  • Инструкция TRUNCATE TABLE не активирует триггер, поскольку она не записывает в журнал удаление отдельных строк.

Примечание! Преимущества TRUNCATE TABLE в некоторых случаях, как Вы понимаете, могут быть и недостатками.

Инструкция TRUNCATE TABLE удаляет все строки (данные) таблицы, но структура таблицы: столбцы, ограничения, индексы и так далее сохраняются. Для того чтобы полностью удалить таблицу и ее определение, следует использовать инструкцию DROP TABLE.

Ограничения TRUNCATE TABLE

  • Если на таблицу ссылается ограничение FOREIGN KEY, то TRUNCATE TABLE использовать нельзя;
  • Если таблица является частью индексированного представления, то TRUNCATE TABLE также нельзя использовать;
  • Если таблица опубликована с использованием репликации транзакций или репликации слиянием, то инструкцию TRUNCATE TABLE использовать нельзя.

Пример использования инструкции TRUNCATE TABLE

Для примера давайте создадим таблицу со столбцом идентификаторов, затем добавим в нее данные и удалим их инструкцией TRUNCATE TABLE, затем снова добавим данные и проверим, сбросился ли счетчик столбца идентификаторов на начальное значение.

Примечание! В качестве SQL сервера у меня выступает версия Microsoft SQL Server 2016 Express.

   
        --Создаем тестовую таблицу
        CREATE TABLE TestTable(
                ProductId INT IDENTITY(1,1) NOT NULL,
                ProductName VARCHAR(100) NOT NULL
        )
        --Добавляем данные
        INSERT INTO TestTable
                VALUES ('Компьютер'),
                           ('Монитор'),
                           ('Принтер')
        --Выборка данных                   
        SELECT * FROM TestTable    
        --Удаляем все данные инструкцией TRUNCATE TABLE
        TRUNCATE TABLE TestTable
        --Снова добавляем данные
        INSERT INTO TestTable
                VALUES ('Компьютер'),
                           ('Монитор'),
                           ('Принтер')
        --Выборка данных
        SELECT * FROM TestTable 



Как видим, счетчик сброшен, инструкция TRUNCATE TABLE отработала.

Заметка! Для изучения всех возможностей SQL и языка T-SQL рекомендую посмотреть мои видеокурсы по T-SQL для новичков.

На этом у меня все, пока!

Нравится6Не нравится1

Команда DROP — DROP TABLE, TRUNCATE TABLE, DROP INDEX, DROP DATABASE, DROP SEQUENCE, DROP SYNONYM, DROP PUBLIC SYNONYM

Команда DROP

Используя запрос DROP можно удалить таблицы (

TABLE), индексы (INDEX) и базы данных (DATABASE).

DROP TABLE

DROP TABLE, применяемый в базе данных Oracle.
Обычно с таблицей в базе данных связано несколько объектов, например индекс, создаваемый первичным ключом, или ограничение UNIQUE, налагаемое на столбцы таблицы.
При удалении таблицы Oracle автоматически удаляет и любой связанный с ней индекс. Для удаления таблицы из БД необходимо выполнить команду DROP TABLE:

DROP TABLE Пример 1
Удаление таблицы:

DROP TABLE table;

Однако удалить таблицу не всегда столь просто. В любой момент мы можем создать таблицу с ограничениями целостности. Ограничение целостности (Integrityconstraint ) – это правило, устанавливаемое для таблицы и ограничивающее тип данных, которые можно вводить в эту таблицу. Если попытаться удалить таблицу с ограничениями целостности, возвращается сообщение об ошибке следующего вида: «

Unique/primary keys in table referenced by foreign keys» (на уникальные/первичные ключи таблицы ссылаются внешние ключи).

Когда существуют ограничения для других таблиц, на которые ссылается удаляемая таблица, можно пользоваться каскадной конструкцией CASCADE CONSTRAINTS:
DROP TABLE. Пример 2
Удаление таблицы с ограничениями целостности:

DROP TABLE table CASCADE CONSTRAINTS;

DROP TABLE, применяемый в mySQL
DROP TABLE. Пример 3

Для удаления таблицы также используется запрос:

DROP TABLE table;

DROP TABLE. Пример 4

В случае, если необходимо установить проверку на существование таблицы при удалении (если существует удалить таблицу

) запрос принимает следующий вид:

DROP TABLE IF EXISTS table;

Данный запрос будет выполнен в том случае, если удаляемая таблица существует в базе данных.

DROP INDEX
Данный запрос DROP INDEX используется для удаления индексов в таблице.

DROP INDEX, применяемый в базе данных Oracle:
Когда индекс в базе данных больше не нужен, разработчик может удалить его командой DROP INDEX. После удаления индекса эффективность поиска с использованием столбца или столбцов, ограниченных индексом, больше не повышается и упоминание об индексе исчезает из словаря данных. Индекс, применяемый для первичного ключа, удалить нельзя.

Синтаксис оператора DROP INDEX одинаков для удаления индекса любого типа (уникальности, битовой карты или В-дерева). Чтобы каким-то образом улучшить индекс, нужно сначала удалить его, а потом создать новый.

DROP INDEX. Пример 1

DROP INDEX my_index;

DROP INDEX, применяемый в mySQL:

DROP INDEX. Пример 2
Для удаления индексов (INDEX) используется запрос:

DROP INDEX my_index ON table;

Данный запрос удаляет индексы, указанные в my_index из таблицы table, но она не работает в версиях MySQL до 3.22. В версиях 3.22 и более поздних используется команда:

ALTER TABLE table_name DROP INDEX index_name;

DROP DATABASE

DROP DATABASE. Пример 1

DROP DATABASE database;

Запрос DROP DATABASE удаляет базу данных database.

TRUNCATE TABLE

Запрос TRUNCATE TABLE

используется для того, чтобы удалить данные внутри таблицы, тем самым не затрагивая саму таблицу. В нужном случае TRUNCATE TABLE может быть очень полезен.

TRUNCATE TABLE, примеры использования TRUNCATE TABLE
TRUNCATE TABLE. Пример 1

TRUNCATE TABLE table;

DROP SEQUENCE
DROP SEQUENCE используется для удаления последовательности.

DROP SEQUENCE. Пример 1

DROP SEQUENCE sequence_name;

DROP SYNONYM
DROP SYNONYM используется для удаления синонимов.

DROP SYNONYM. Пример 1

DROP SYNONYM synonym_name;

Для удаления общих синонимов необходимо воспользоваться командой DROP PUBLIC SYNONYM.

DROP SYNONYM. Пример 2

DROP PUBLIC SYNONYM synonym_name;

SQL — TRUNCATE

Вступление

Оператор TRUNCATE удаляет все данные из таблицы. Это похоже на DELETE без фильтра, но, в зависимости от программного обеспечения базы данных, имеет определенные ограничения и оптимизации.

Синтаксис

  • TRUNCATE TABLE имя_таблицы;

замечания

TRUNCATE — это команда DDL (Data Definition Language), и поэтому существуют значительные различия между ней и DELETE (язык манипулирования данными, команда DML). Хотя TRUNCATE может быть средством быстрого удаления больших объемов записей из базы данных, эти различия следует понимать, чтобы решить, подходит ли использование команды TRUNCATE в вашей конкретной ситуации.

  • TRUNCATE — это операция с данными. Поэтому триггеры DML (ON DELETE), связанные с таблицей, не срабатывают при выполнении операции TRUNCATE. Хотя это позволит сэкономить большое количество времени для массовых операций удаления, однако вам может понадобиться вручную удалить связанные данные.
  • TRUNCATE освободит пространство на диске, используемое удаленными строками, DELETE освободит место
  • Если усеченная таблица использует столбцы идентификаторов (MS SQL Server), то семя сбрасывается командой TRUNCATE. Это может привести к проблемам ссылочной целостности
  • В зависимости от используемых ролей безопасности и используемого варианта SQL у вас могут не быть необходимых разрешений для выполнения команды TRUNCATE

Удаление всех строк из таблицы Employee

TRUNCATE TABLE Employee;

Использование таблицы усечений часто бывает лучше, чем использование DELETE TABLE, поскольку оно игнорирует все индексы и триггеры и просто удаляет все.

Удалить таблицу — это операция на основе строки, это означает, что каждая строка удаляется. Таблица усечения — это операция страницы с данными, перераспределенная на всю страницу данных. Если у вас есть таблица с миллионом строк, будет намного быстрее обрезать таблицу, чем было бы использовать оператор таблицы удалений.

Хотя мы можем удалять определенные строки с помощью DELETE, мы не можем TRUNCATE определенные строки, мы можем только TRUNCATE все записи сразу. Удаление всех строк, а затем добавление новой записи будет продолжать добавление значения «Приоритет» с автоматическим добавлением из ранее вставленного значения, где, как и в Truncate, значение первичного ключа Auto Incremental также будет сброшено и начнется с 1.

Обратите внимание, что при усечении таблицы внешние ключи не должны присутствовать , иначе вы получите сообщение об ошибке.

Truncate (SQL)

TRUNCATE — в языке SQL — операция мгновенного удаления всех строк в таблице. Логически схожа с операцией DELETE без оператора WHERE, но в ситуациях на практике имеет отличия.

1. Отличия от оператора DELETE
Основные отличия операторов TRUNCATE и DELETE, которые могут присутствовать в различных реализациях СУБД:
После операции TRUNCATE для некоторых СУБД например, Oracle следует неявная операция COMMIT. Поэтому удаленные в таблице записи нельзя восстановить операцией ROLLBACK. Но существуют и СУБД, в которых операция TRUNCATE может участвовать в транзакциях, например, Microsoft SQL Server.
Операция TRUNCATE не возвращает какого-то осмысленного значения обычно возвращает 0 в отличие от DELETE, которая возвращает число удаленных строк.
Операция TRUNCATE в некоторых СУБД например, MySQL или Microsoft SQL Server запрещена для таблиц, содержащих внешние ключи других таблиц.
Операция TRUNCATE не записывает в журнал событий удаление отдельных строк. Вследствие чего не может активировать триггеры.
Операция TRUNCATE в некоторых СУБД например, MySQL или Microsoft SQL Server, сбрасывает значение счетчиков для полей с AUTOINCREMENT / IDENTITY.
Операция DELETE блокирует каждую строку, а TRUNCATE — всю таблицу.
Реализация оператора TRUNCATE может зависеть от выбора конкретной СУБД. Поэтому в каждом случае необходимо изучать документацию выбранной системы.

Дата публикации:
05-16-2020

Дата последнего обновления:
05-16-2020

РАЗНИЦА МЕЖДУ DELETE И TRUNCATE В SQL (СО СРАВНИТЕЛЬНОЙ ДИАГРАММОЙ) — ТЕК

DELETE и TRUNCATE — это команды, используемые для удаления кортежей из отношения, но они различаются во многих контекстах. В QL команда DELETE — это Язык обработки данных команда, тогда как команда TR

Содержание:

DELETE и TRUNCATE — это команды, используемые для удаления кортежей из отношения, но они различаются во многих контекстах. В SQL команда DELETE — это Язык обработки данных команда, тогда как команда TRUNCATE является Язык определения данных команда.

Однако момент, который позволяет нам различать DELETE и TRUNCATE, заключается в том, что DELETE может удалить указанные кортежи из отношения, тогда как команда TRUNCATE удаляет целые кортежи из отношения.

Мы не должны останавливаться на достигнутом, есть много других различий между DELETE и TRUNCATE. Обсудим их с помощью сравнительной таблицы, представленной ниже.

Сравнительная таблица

Основа для сравненияУДАЛЯТЬTRUNCATE
БазовыйВы можете указать кортеж, который хотите удалить.Он удаляет все кортежи из отношения.
ЯзыкDELETE — это команда языка манипулирования данными.TRUNCATE — это команда языка определения данных.
ГДЕКоманда DELETE может иметь предложение WHERE.Команда TRUNCATE не имеет предложения WHERE.
ТриггерКоманда DELETE активирует триггер, примененный к таблице, и заставляет их срабатывать.Команда TRUNCATE не активирует срабатывание триггеров.
УдалениеКоманда DELETE удаляет кортежи один за другим.TRUNCATE удаляет всю страницу данных, содержащую кортежи.
ЗамокКоманда DELETE блокирует строку / кортеж перед ее удалением.Команда TRUNCATE блокирует страницу данных перед удалением данных таблицы.
СкоростьКоманда DELETE действует медленнее, чем TRUNCATE.TRUNCATE быстрее по сравнению с DELETE.
СделкаDELETE записывает журнал транзакций для каждого удаленного кортежа.TRUNCATE записывает журнал транзакций для каждой страницы удаленных данных.
ВосстановитьПосле команды DELETE может следовать либо COMMIT, либо ROLLBACK.Команда TRUNCATE не может быть ROLLBACK.

Определение DELETE

УДАЛЯТЬ это Язык обработки данных (DML) команда. Задача команды DELETE — удалить или удалить кортежи из таблицы или отношения. Используя DELETE, мы можем удалить весь кортеж со всеми значениями его атрибутов из отношения. DELETE не удаляет значение определенного атрибута кортежа из отношения.

Вы можете отфильтровать кортежи, которые хотите удалить из таблицы, используя ГДЕ пункт. если ты уточнить Предложение WHERE в операторе DELETE, тогда он удалит только кортежи, удовлетворяющие условию предложения WHERE. Но если ты не указывать предложение WHERE в операторе DELETE, тогда по умолчанию оно удаляет или исключает все кортежи из отношения. Предложение WHERE в инструкции DELETE может содержать вложенные ВЫБРАТЬ ОТ ГДЕ заявления.

Синтаксис команды DELETE следующий:

УДАЛИТЬ ИЗ table_name ГДЕ [состояние] ;

Команда DELETE работает только с единственное отношение или стол за раз. Если вы хотите удалить кортеж из разных отношений, вам нужно разместить разные команды DELETE для каждого. Но удаление кортежа из одного отношения может нарушить ссылочная целостность базы данных, которую можно разрешить с помощью триггеров. Если команда DELETE нарушает ссылочную целостность, то все ссылочные триггеры (если указано) активируется, что распространяет действие удаления на кортежи другого отношения, которое относится к удаленным кортежам.

Сначала команда DELETE замок строка или кортеж, который нужно удалить, а затем удалить кортеж по одному. Следовательно, требуется больше блокировок и ресурсов, которые делают его помедленнее. Вы можете сделать изменения, сделанные оператором DELETE, постоянными, используя COMMIT, или вы можете сбросить базу данных, используя ОТКАТ.

Определение TRUNCATE

TRUNCATE похожа на команду DELETE, поскольку она также удаляет кортежи из отношения. Разница в том, что он удаляет целые кортежи из отношения. При выполнении команды TRUNCATE все данные из таблицы удаляются, каждый кортеж вместе со всеми значениями его атрибутов удаляется из таблицы. Но структура таблицы все еще существует в базе данных. Итак, вы можете снова ввести кортежи в таблицу. TRUNCATE — это Команда языка определения данных.

Синтаксис команды TRUNCATE следующий:

ОБРЕЗАТЬ ТАБЛИЦУ table_name;

Как и DELETE, TRUNCATE не обрабатывает данные таблицы построчно. Вместо этого он работает с страницы данных которые хранят данные таблицы. Теперь, когда TRUNCATE удаляет страницы данных, он должен получить замок на страницах данных вместо кортежей. Следовательно, это приводит к меньшей потребности в блокировках и ресурсах, что делает TRUNCATE Быстрее по сравнению с DELETE.

Выполнение команды TRUNCATE приводит к не активировать любой триггеры поскольку он не обрабатывает данные построчно. TRUNCATE не может быть выполнен, если на таблицу ссылается какой-либо внешний ключ. Как только команда TRUNCATE удаляет данные таблицы, она может никогда быть восстановлен назад.

Вывод

Если вы хотите настроить удаление записей из таблицы, вы можете использовать команду DELETE. Если вы хотите очистить таблицу, т.е. вы не хотите оставлять какие-либо данные в таблице, используйте команду TRUNCATE.

Truncate table и создание копий — SQL

Базовый курс мы закончили на том, что рассмотрели команду удаления данных. Чтобы удалить все данные из таблицы с помощью DELETE можно выполнить команду:

DELETE FROM имя_таблицы

Так как мы не указали WHERE и ничего не ограничиваем, то удалится все. В принципе этот вариант работает, но есть вариант чуть быстрее, если вы хотите очистить все, это использовать команду:

truncate table имя_таблицы

Этой команде не нужно указывать WHERE, потому что она как раз предназначена для того, чтобы удалять все и у нее два основных отличия:

1. Он работает быстрее

2. Номера для автоматически увеличиваемых полей начнутся с начала. При удалении с помощью DELETE номера продолжаться.

Можно попробовать выполнить этот запрос прямо на одной из таблиц, которые у нас уже есть, но мы потеряем тогда данные, которые еще могут пригодиться. Давайте создадим копию существующей таблицы. Мы можем использовать один из запросов, который мы выполняли при создании таблицы и можем накидать туда данные, но для быстрых резервных копий данных есть подход проще. В MySQL это:

create table teamcopy 
select * from team;

Мы создаем здесь таблицу teamcopy, но вместо указания структуры данных идет select запрос и именно на результатах этого запроса будет создана новая таблица. То есть можно сказать, что выполняется select запрос, и для результата создается таблица с именем teamcopy и туда помещаются данные запроса.

Можно выбирать не все данные, а только определенные колонки:

create table teamcopy 
select name from team;

В результате этого запроса будет создана таблица teamcopy только с одной колонкой name.

В MS SQL для создания копии используется немного другой вариант:

select * 
into teamcopy
from team;

Вот эту таблицу не жалко, поэтому в ней можно убить все данные. Можете выполнить:

truncate table teamcopy

Чтобы убедиться, что этот запрос уничтожает все данные.

Oracle / PLSQL: функция TRUNC (с датами)


В этом руководстве Oracle объясняется, как использовать функцию Oracle / PLSQL TRUNC (применительно к значениям даты) с синтаксисом и примерами.

Описание

Функция Oracle / PLSQL TRUNC возвращает дату, усеченную до определенной единицы измерения.

Синтаксис (с датами)

Синтаксис функции TRUNC в Oracle / PLSQL:

 TRUNC (дата [, формат]) 

Параметры или аргументы

дата
Дата для усечения.
формат

Необязательно. Единица измерения, применяемая для усечения. Если параметр формата опущен, функция TRUNC усечет дату до значения дня, так что любые часы, минуты или секунды будут усечены. Это может быть одно из следующих значений:

Установка Допустимые параметры формата
Год SYYYY, YYYY, YEAR, SYEAR, YYY, YY, Y
Год ISO IYYY, IY, I
Квартал Q
Месяц МЕСЯЦ, МЕС, ММ, RM
неделя WW
ИВ IW
Вт Вт
День DDD, DD, J
День начала недели ДЕНЬ, ДГ, Д
Час HH, Hh22, Hh34
Минуты MI

Возвращает

Функция TRUNC (применительно к датам) возвращает значение даты.

Относится к

Функцию TRUNC можно использовать в следующих версиях Oracle / PLSQL:

  • Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i

Пример — с датами

Давайте рассмотрим некоторые примеры функций Oracle TRUNC и узнаем, как использовать функцию TRUNC в Oracle / PLSQL.

Например:

 TRUNC (TO_DATE ('22 -AUG-03 '),' YEAR ')
  Результат:  '01 -ЯНВ-03 '

TRUNC (TO_DATE ('22 -AUG-03 '),' Q ')
  Результат:  '01 -ИЮЛ-03 '

TRUNC (TO_DATE ('22 -AUG-03 ');' МЕСЯЦ ')
  Результат:  '01 -AUG-03 '

TRUNC (TO_DATE ('22 -AUG-03 '),' DDD ')
  Результат:  '22 -AUG-03 '

TRUNC (TO_DATE ('22 -AUG-03 '),' DAY ')
  Результат:  '17 -AUG-03 '

Функция Oracle TRUNC Date на практических примерах

Функция Oracle TRUNC () возвращает значение DATE , усеченное до указанной единицы.

Синтаксис

Ниже показан синтаксис функции Oracle TRUNC () :

 

TRUNC (дата, формат)

Язык кода: SQL (язык структурированных запросов) (sql)

Аргументы

Функция TRUNC () принимает два аргумента:

1) date
Аргумент date — это значение DATE или выражение, которое оценивается как значение DATE , которое будет усечено.

2) Формат
Аргумент формат определяет единицу, до которой будет усечена дата .

Аргумент формат является необязательным. Его значение по умолчанию — DD , которое указывает функции TRUNC () усечь дату до полуночи.

В следующей таблице показаны допустимые значения для аргумента формата :

Формат Описание
CC, SCC Century, со знаком минус или без него (BC)
[ S] YYYY, [S] YEAR, YYY, YY, Y Год (в различных вариантах)
IYYY, IYY, IY, I Год ISO
Q Квартал
МЕСЯЦ , MON, MM, RM Месяц (полное название, сокращенное название, число, римские цифры)
IW, WW (ISO) номер недели
W День недели
DDD, DD, J День (года / месяца / юлианского дня)
DAY, DY, D Ближайшее воскресенье
HH, Hh22, Hh34 Часы
MI Минуты

Возвращаемое значение

Функция TRUNC () возвращает значение DATE , усеченное до указанной единицы.

Примеры

Давайте рассмотрим несколько примеров использования функции Oracle TRUNC () .

A) Усечь значение даты с использованием формата по умолчанию

Рассмотрим следующее значение даты и времени:

 

04 августа 2017 г. 15:35:32

Язык кода: SQL (язык структурированных запросов) (sql )

Следующий оператор усекает значение даты до полуночи:

 

SELECT TO_CHAR ( TRUNC (TO_DATE ('04 -Авг-2017 15:35:32 ',' ДД-Пн-ГГГГ Чч34: МИ: СС ')), "ДД-Пн-ГГГГ Чч34: МИ: СС" ) результат ИЗ двойной;

Язык кода: SQL (язык структурированных запросов) (sql)

Вывод:

 

РЕЗУЛЬТАТ -------------------- 04 августа 2017 г. 00:00:00

Язык кода: CSS (css)

В этом примере

  • Сначала функция TO_DATE () преобразовала строку даты в значение DATE .
  • Во-вторых, функция TRUNC () усекла дату. Поскольку мы не передали аргумент формата, функция TRUNC () использует значение по умолчанию, которое усекает дату до полуночи.
  • В-третьих, функция TO_CHAR () отформатировала результат функции TRUNC () .

B) Получить первый день месяца из числа

Следующий оператор возвращает первый день текущего месяца.

 

ВЫБРАТЬ TRUNC (SYSDATE, 'MM') результат ИЗ двойной;

Язык кода: SQL (язык структурированных запросов) (sql)

Вывод:

 

РЕЗУЛЬТАТ --------- 01-MAY-20

Если вы хотите вернуть первый день месяца определенной даты, вам просто нужно использовать эту дату вместо SYSDATE

C) Получить первый день квартала даты

Аналогичным образом можно получить первый день текущего квартала:

 

SELECT TRUNC (SYSDATE, 'Q') result ОТ двойного;

Язык кода: SQL (язык структурированных запросов) (sql)

Вывод:

 

РЕЗУЛЬТАТ --------- 01-APR-20

В этом примере мы заменили месяц ( MM ) на квартал ( Q ).

В этом руководстве вы узнали, как использовать функцию Oracle TRUNC () для усечения значения даты до указанной единицы.

Было ли это руководство полезным?

Oracle TRUNC (дата) функция - w3resource

Как обрезать функции даты в Oracle?

Функция TRUNC (дата) используется для получения даты с временной частью дня, усеченной до определенной единицы измерения.Он действует по правилам григорианского календаря.

Синтаксис:

 TRUNC (дата [, fmt]) 

Параметры:

Имя Описание
дата Дата для усечения.
fmt
(дополнительно)
Единица измерения для усечения. Если fmt отсутствует, то дата обрезается до ближайшего дня.

Тип возвращаемого значения:

Возвращаемое значение всегда имеет тип данных DATE

.

Модели формата даты для функции TRUNC:

Модель формата Блок округления
CC SCC На единицу больше первых двух цифр четырехзначного года
SYYYY YYYY YEAR SYEAR YYY YY Y Год (округляется до 1 июля)
IYYY IY IY I Год ISO
Q Квартал (округляется до шестнадцатого числа второго месяца квартала)
МЕСЯЦ МЕСЯЦ ММ РМ Месяц (округляется до шестнадцатого числа)
WW Тот же день недели, что и первый день года
ИВ Тот же день недели, что и первый день года ISO
Вт Тот же день недели, что и первый день месяца
DDD DD J День
ДЕНЬ ДГ D Начальный день недели
HH Hh22 Hh34 Час
MI Минуты

Применимо к:
Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i

Иллюстрированная презентация

Пример: функция Oracle TRUNC (дата)

Следующий оператор усекает указанную дату:

  SELECT TRUNC (TO_DATE ('02 -MAR-15 ',' DD-MON-YY '),' YEAR ')
  «Новый год» ОТ ДВОЙНОЙ;
 
 

Пример вывода:

 Новый год
---------
01-ЯНВ-15
 

Предыдущая: TO_YMINTERVAL
Далее: TZ_OFFSET

Oracle TRUNC function (FOR DATE)

SQLS * Plus - лучший инструмент для создания отчетов и автоматизации из командной строки SQL Server! SQLS * Plus на несколько порядков лучше, чем инструменты командной строки SQL Server sqlcmd и osql.

Enteros UpBeat предлагает запатентованную платформу SaaS для управления производительностью баз данных. Он проактивно выявляет основные причины сложных проблем с производительностью баз данных, влияющих на доход, в растущем числе СУБД, NoSQL и платформ баз данных глубокого / машинного обучения. Мы поддерживаем Oracle, SQL Server, IBM DB2, MongoDB, Casandra, MySQL, Amazon Aurora и другие системы баз данных.

Главная »Блог SQL Server» Oracle PL / SQL »Функция Oracle TRUNC (FOR DATE)

12 августа 2020 г.

Функция Oracle / PLSQL TRUNC возвращает дату, усеченную до определенной единицы.

Oracle / PLSQL синтаксис функции TRUNC

TRUNC (date_id, [format_id])

Параметры и аргументы функции

  • date_id - дата для усечения.
  • format_id - единица измерения, которая используется для усечения. Если параметр формата опущен, TRUNC сократит дату до значения дня, так что любые часы, минуты или секунды будут усечены. Допустимые параметры формата показаны ниже:
Единица Фактические параметры формата
Год SYYYY, YYYY, YEAR, SYEAR, YYY, YY, Y
ISO год IYYY, IY, I
Квартал Q
Месяц МЕСЯЦ, МЕС, ММ, RM
Неделя WW
IW IW
W W
День DDD, DD, J
День начала недели DAY, DY, D
Часы HH, Hh22, Hh34
Одна минута MI

Функция TRUNC ция (для дат) возвращает дату.

Функцию TRUNC можно использовать в следующих версиях Oracle / PLSQL

Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i

Пример для дат

Рассмотрим несколько примеров функции TRUNC и узнайте, как использовать функцию TRUNC в Oracle / PLSQL.

SELECT TRUNC (TO_DATE ('31 .08.2014 '),' YEAR ') FROM DUAL;

- Результат: 01.01.2014

SELECT TRUNC (TO_DATE ('31.08.2019 '),' Q ') ОТ ДВОЙНОЙ;

- Результат: 01.07.2019

SELECT TRUNC (TO_DATE ('31.08.2019 '),' MONTH ') FROM DUAL;

- Результат: 01.08.2019

SELECT TRUNC (TO_DATE ('31.08.2019 '),' DDD ') FROM DUAL;

- Результат: 31.08.2019

SELECT TRUNC (TO_DATE ('31.08.2019 '),' DAY ') FROM DUAL;

- Результат: 25.08.2019

Oracle Tutorial - Date TRUNC Function

Теги: Oracle, Oracle Database, Oracle SQL, PL / SQL, PLSQL, SQL

Функция Oracle TRUNC (ДЛЯ НОМЕРА)

SQLS * Plus - лучший инструмент для создания отчетов и автоматизации из командной строки SQL Server! SQLS * Plus на несколько порядков лучше, чем инструменты командной строки SQL Server sqlcmd и osql.

Enteros UpBeat предлагает запатентованную платформу SaaS для управления производительностью баз данных. Он проактивно выявляет основные причины сложных проблем с производительностью баз данных, влияющих на доход, в растущем числе СУБД, NoSQL и платформ баз данных глубокого / машинного обучения. Мы поддерживаем Oracle, SQL Server, IBM DB2, MongoDB, Casandra, MySQL, Amazon Aurora и другие системы баз данных.

Главная »Блог SQL Server» Oracle PL / SQL »Функция Oracle TRUNC (ДЛЯ НОМЕРА)

11 августа 2020 г.

Функция Oracle / PLSQL TRUNC возвращает число, усеченное до определенного количества цифр после десятичной точки .

Oracle / PLSQL синтаксис функции TRUNC

TRUNC (number_id, [decimal_places_id]))

Параметры и аргументы функции

  • number_id - число для усечения.
  • decimal_places_id - количество десятичных цифр для усечения. Это значение должно быть целым числом. Если этот параметр не указан, функция TRUNC вернет целое число. Если параметр отрицательный, числа слева от десятичной точки будут усечены.

Функция TRUNC (для чисел) возвращает числовое значение.

Функцию TRUNC можно использовать в следующих версиях Oracle / PLSQL

Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i

Рассмотрим некоторые примеры функцию TRUNC и узнайте, как использовать функцию TRUNC в Oracle / PLSQL.

ВЫБРАТЬ ОТДЕЛЕНИЕ (123.456) ИЗ ДВОЙНОГО;

- Результат: 123

SELECT TRUNC (123.456, 0) ОТ ДВОЙНОЙ;

- Результат: 123

SELECT TRUNC (123.456, 1) FROM DUAL;

- Результат: 123,4

SELECT TRUNC (123.456, 2) FROM DUAL;

- Результат: 123,45

SELECT TRUNC (123.456, 3) FROM DUAL;

- Результат: 123,456

SELECT TRUNC (-123,456, 2) FROM DUAL;

- Результат: -123,45

SELECT TRUNC (123.456, -1) ОТ ДВОЙНОЙ;

- Результат: 120

SELECT TRUNC (123,456, -2) FROM DUAL;

- Результат: 100

SELECT TRUNC (123,456, -3) FROM DUAL;

- Результат: 0

Oracle Tutorial - Date Functions ROUND и TRUNC

Теги: Oracle, База данных Oracle, Oracle SQL, PL / SQL, PLSQL, SQL

Функция SQL DATE_TRUNC | Синтаксис и примеры BigQuery

Ресурсы SQL / BigQuery / DATE_TRUNC См. Также DATETIME_TRUNC, TIMESTAMP_TRUNC, TIME_TRUNC

Функция DATE_TRUNC в BigQuery усекает дату до заданной части date_part.

 
  DATE_TRUNC (date_expression, date_part)  

Где date_part может принимать любое из следующих значений:

  • WEEK (): усекает date_expression до границы предыдущей недели, где недели начинаются с WEEKDAY. Допустимые значения для WEEKDAY: ВОСКРЕСЕНЬЕ, ПОНЕДЕЛЬНИК, ВТОРНИК, СРЕДА, ЧЕТВЕРГ, ПЯТНИЦА и СУББОТА.
  • ISOWEEK: усекает date_expression до предыдущей границы недели ISO 8601. ISOWEEK начинается в понедельник. Первая НЕДЕЛЯ ISO каждого года по ISO содержит первый четверг соответствующего года по григорианскому календарю.Любое выражение date_expression до этого будет усечено до предыдущего понедельника.
  • ISOYEAR: усекает date_expression до предшествующей границы года нумерации недель ISO 8601. Граница года по ISO - это понедельник первой недели, четверг которой принадлежит соответствующему году по григорианскому календарю.

Возвращает: DATE

 
  SELECT
  DATE_TRUNC (CAST ('2021-01-01' КАК ДАТА), МЕСЯЦ) КАК месяц,
  DATE_TRUNC (CAST ('2021-01-01' AS DATE), WEEK) КАК неделя,
  DATE_TRUNC (CAST ('2021-01-01' AS DATE), YEAR) AS год  
  • Всегда возвращает ДАТУ, поэтому даже если вы выполняете усечение до ГОДА, вы получите обратно первый день этого года .По этой причине его часто используют вместе с FORMAT_DATE, если вы хотите просто использовать год YYYY.
  • Будьте осторожны при работе с несколькими TRUNC - как показано в приведенном выше примере, дату в 2021 году можно считать в 2020 году, если там был первый день недели. Таким образом, если вы будете считать по ГОДУ и ГОДУ (НЕДЕЛЯ), вы получите разные результаты.
Как агрегировать данные по месяцам?

DATE_TRUNC очень удобен для агрегирования данных по определенной части date_part, например MONTH.См. Пример ниже, чтобы увидеть, как вы можете агрегировать по МЕСЯЦУ:

 
  ВЫБРАТЬ
  СУММ (число) КАК итого,
  DATE_TRUNC (число, МЕСЯЦ) КАК месяц
ИЗ
  (
    ВЫБРАТЬ
      CAST ('2021-02-04' КАК ДАТА) КАК дата,
      3 номер AS
    СОЮЗ ВСЕ
(    ВЫБРАТЬ
      CAST ('2021-02-14' AS DATE) КАК дата,
      7 номер AS)
    СОЮЗ ВСЕ
(    ВЫБРАТЬ
      CAST ('2021-01-04' КАК ДАТА) КАК дата,
      27 номер AS)
  ) AS table_3
ГРУППА ПО
  месяц  

Убедитесь, что вы включили столбец DATE_TRUNC в свой GROUP BY!

Устранение неполадок Общие ошибки

Аргумент 1 DATE_TRUNC имеет неверный тип: ожидаемая дата, метка времени.

Убедитесь, что вы используете правильную функцию для вашего типа данных. Чтобы использовать DATE_TRUNC, вы должны работать с DATE, а не с DATETIME, TIMESTAMP или TIME.

Вы можете использовать CAST, чтобы изменить другие типы даты на DATE, или использовать одну из эквивалентных функций для других типов дат, например DATETIME_TRUNC.

ROUND, TRUNC, CEIL и FLOOR в Oracle Database

Я продолжаю свои усилия по охвату основных, но важных тем Oracle Database .В этом посте я пытаюсь дать небольшое объяснение и несколько примеров функций ROUND, TRUNC, CEIL и FLOOR в Oracle Database.

ОКРУГЛ (n, i): ОКРУГЛ возвращает n, округленное до i разрядов справа от десятичной точки. Значение i по умолчанию - 0. Аргумент i может быть отрицательным, чтобы округлить цифры слева от десятичной точки. Ниже приведен пример функции ОКРУГЛ, где i - положительное, нулевое и отрицательное значения.

  ngarg> выберите сал, круглый (sal, 1), круглый (sal, 2), круглый (sal), круглый (sal, -1), круглый (sal, -2) из ​​emp;

       ПРОДАЖА КРУГЛЫЙ (SAL, 1) КРУГЛЫЙ (SAL, 2) КРУГЛЫЙ (SAL) КРУГЛЫЙ (SAL, -1) КРУГЛЫЙ (SAL, -2)
---------- ------------ ------------ ---------- ------ ------- -------------
   5000.15 5000,2 5000,15 5000 5000 5000
    2850,3 2850,3 2850,3 2850 2850 2900
   2450,45 2450,5 2450,45 2450 2450 2500
    2975,5 2975,5 2975,5 2976 2980 3000
   3000,55 3000,6 3000,55 3001 3000 3000
    3000,6 3000,6 3000,6 3001 3000 3000
    800,75 800,8 800,75 801 800 800
    1600.9 1600,9 1600,9 1601 1600 1600
      1250 1250 1250 1250 1250 1300
   1250,05 1250,1 1250,05 1250 1250 1300
   1500.95 1501 1500.95 1501 1500 1500
   1100.01 1100 1100.01 1100 1100 1100
    950,99 951 950,99 951 950 1000
      1300 1300 1300 1300 1300 1300
  

TRUNC (n, i): Функция TRUNC возвращает n, усеченное до i десятичных знаков.Если i опущено, то n обрезается до 0 разрядов. i может быть отрицательным, чтобы обрезать (сделать ноль) n цифр слева от десятичной точки. Ниже приведен пример функции TRUNC с положительным, нулевым и отрицательным значениями i.
  ngarg> выберите sal, trunc (sal, 1), trunc (sal, 2), trunc (sal), trunc (sal, -1), trunc (sal, -2) из ​​emp;

       SAL TRUNC (SAL, 1) TRUNC (SAL, 2) TRUNC (SAL) TRUNC (SAL, -1) TRUNC (SAL, -2)
---------- ------------ ------------ ---------- ------ ------- -------------
   5000,15 5000.1 5000,15 5000 5000 5000
    2850,3 2850,3 2850,3 2850 2850 2800
   2450,45 2450,4 2450,45 2450 2450 2400
    2975,5 2975,5 2975,5 2975 2970 2900
   3000,55 3000,5 3000,55 3000 3000 3000
    3000,6 3000,6 3000,6 3000 3000 3000
    800,75 800,7 800,75 800 800 800
    1600.9 1600,9 1600,9 1600 1600 1600
      1250 1250 1250 1250 1250 1200
   1250,05 1250 1250,05 1250 1250 1200
   1500.95 1500.9 1500.95 1500 1500 1500
   1100.01 1100 1100.01 1100 1100 1100
    950,99 950,9 950,99 950 950 900
      1300 1300 1300 1300 1300 1300
  

CEIL (n): Функция CEIL возвращает наименьшее целое число, которое больше или равно n.
FLOOR (n): Функция FLOOR возвращает наибольшее целое число, равное или меньшее n.
  ngarg> выберите sal, ceil (sal), floor (sal), round (sal), trunc (sal) из emp;

       SAL CEIL (SAL) FLOOR (SAL) ROUND (SAL) TRUNC (SAL)
---------- ---------- ---------- ---------- ----------
   5000,15 5001 5000 5000 5000
    2850,3 2851 2850 2850 2850
   2450,45 2451 2450 2450 2450
    2975,5 2976 2975 2976 2975
   3000.55 3001 3000 3001 3000
    3000,6 3001 3000 3001 3000
    800,75 801 800 801 800
    1600,9 1601 1600 1601 1600
      1250 1250 1250 1250 1250
   1250,05 1251 1250 1250 1250
   1500.95 1501 1500 1501 1500
   1100.01 1101 1100 1100 1100
    950,99 951 950 951 950
      1300 1300 1300 1300 1300
  

Похожие сообщения:
- Ответы на вопросы интервью по SQL
- Порядок по и нулевые значения в Oracle Database
- Игра с усечением и датой
- Оракул: некоторые важные запросы даты
- Предпочитайте арифметику Oracle Native Date Arithmetic вместо ANSI INTERVAL .
Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *