sql округлить дату до дня

ROUND (Transact-SQL)

Возвращает числовое значение, округленное до указанной длины или точности.

sql округлить дату до дня. Смотреть фото sql округлить дату до дня. Смотреть картинку sql округлить дату до дня. Картинка про sql округлить дату до дня. Фото sql округлить дату до дняСинтаксические обозначения в Transact-SQL

Синтаксис

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

numeric_expression
Выражение категории точного числового или приблизительного числового типа данных, за исключением типа данных bit.

length
Точность, с которой должно быть округлено значение numeric_expression. Аргумент length должен быть выражением типа tinyint, smallint или int. Если аргумент length является положительным числом, значение numeric_expression округляется до числа десятичных разрядов, указанных в аргументе length. Если аргумент length является отрицательным числом, значение numeric_expression округляется слева от десятичной запятой, как указано в аргументе length.

function
Тип выполняемой операции. Аргумент function должен иметь тип tinyint, smallint или int. Если аргумент function не указан или имеет значение 0 (по умолчанию), значение numeric_expression округляется. Когда указывается значение, не равное 0, значение numeric_expression усекается.

Типы возвращаемых данных

Возвращает следующие типы данных.

Результат выраженияВозвращаемый тип
tinyintint
smallintint
intint
bigintbigint
Категория decimal и numeric (p, s)decimal(p, s)
Категории money и smallmoneymoney
Категории float и realfloat

Remarks

Функция ROUND всегда возвращает значение. Если аргумент length имеет отрицательное значение и больше числа знаков перед десятичной запятой, ROUND возвращает 0.

Функция ROUND возвращает округленное значение выражения numeric_expression независимо от типа данных, когда length является отрицательным числом.

SELECT ROUND(CAST (748.58 AS decimal (6,2)),-3);1000.00

Примеры

A. Использование функции ROUND и приближений

Б. Использование функции ROUND и округляющих аппроксимаций

В следующем примере показаны округление и аппроксимация.

В. Использование функции ROUND для усечения

В следующем примере используются две инструкции SELECT для демонстрации различия между округлением и усечением. Первая инструкция округляет результат. Вторая инструкция усекает результат.

Источник

Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

Базы данных

ROUND ФУНКЦИЯ (ДЛЯ ДАТ)

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

Описание

Oracle/PLSQL функция ROUND возвращает дату округленную до определенной единицы измерения.

Синтаксис

Синтаксис Oracle/PLSQL функции ROUND (для дат):

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

date дата для округления.

format единица измерения применяемая для округления. Если параметр format опущен, функция ROUND округляет до ближайшего дня.

Ниже приведены допустимые параметры format :

UnitДопустимый формат параметровПравило округления
YearSYYYY, YYYY, YEAR, SYEAR, YYY, YY, YОкругляет до 1 июля
ISO YearIYYY, IY, I
QuarterQОкругляет до 16 числа второго месяца квартала
MonthMONTH, MON, MM, RMОкругляет до 16 числа месяца
WeekWWТот же день недели, что и первый день года
IWIWТот же день недели, что и первый день года ISO
WWТот же день недели, что и первый день месяца
DayDDD, DD, J
Начальный день неделиDAY, DY, D
HourHH, HH12, HH24
MinuteMI

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

Применение

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

Пример

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

Источник

Функции по работе с датами – ROUND и TRUNC

Функция имеет входное и выходное значение. Входное значение функции называется аргументом. Ноль или более аргументов может быть передано на вход функции в качестве данных для обработки. В данном примере a, b, c являются входными аргументами функции F:

F( a, b, c, …) = результат.

Функции могут быть вложенной частью другой функции, например,

F1 (a, b, F2 (x, y), d),

где F2,

принимает два входных параметра x и y, и образует третий из четырех параметров функции F1. Функции могут работать со всеми доступными типами данных. Наиболее часто используемыми являются символьные, дата и числовые данные.

В Oracle есть два типа функций: однострочные и многострочные функции. Однострочные функции возвращают результат для каждой строки, а многострочные один результат для множества строк. В данном посте рассматриваются следующие функции по работе с датами – ROUND и TRUNC. Существует несколько типов однострочных функций, такие как символьные, числовые, дата, преобразования и общие. Вышеперечисленные функции относятся к функциям по работе с датами. О других функциях по работе с датами можно прочитать в предыдущем посте.

Функции по работе с датами – ROUND и TRUNC.

Функция ROUND даты выполняет операцию округления значения на основе указанного формата точности даты. Возвращаемое значение округляется в большую или меньшую сторону до ближайшего формата точности даты. Функция даты ROUND принимает один обязательный и один опциональный параметр. Форматы точности даты включают в себя век (CC), год (YYYY), квартал (Q), месяц (MM), неделя (W), день (DD), часы (HH) и минуты (MI). Ее синтаксис:

ROUND (дата, формат точности даты)

Примеры использования функции ROUND.

sql округлить дату до дня. Смотреть фото sql округлить дату до дня. Смотреть картинку sql округлить дату до дня. Картинка про sql округлить дату до дня. Фото sql округлить дату до дня

sql округлить дату до дня. Смотреть фото sql округлить дату до дня. Смотреть картинку sql округлить дату до дня. Картинка про sql округлить дату до дня. Фото sql округлить дату до дня

Функция TRUNC для даты выполняет операцию усечения значения даты на основе заданного формата точности даты. Функция даты TRUNC принимает один обязательный и один опциональный параметр. Ее синтаксис:

TRUNC (дата, формат точности даты)

Источник

Функции для работы с датами и временем

Поддержка часовых поясов

timeZone

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

Синтаксис

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

toTimeZone

Синтаксис

Аргументы

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

Пример

timeZoneOf

Возвращает название часового пояса для значений типа DateTime и DateTime64.

Синтаксис

Аргументы

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

Пример

timeZoneOffset

Возвращает смещение часового пояса в секундах от UTC. Функция учитывает летнее время и исторические изменения часовых поясов, которые действовали на указанную дату.
Для вычисления смещения используется информация из базы данных IANA.

Синтаксис

Аргументы

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

Пример

toYear

Переводит дату или дату-с-временем в число типа UInt16, содержащее номер года (AD).

toQuarter

Переводит дату или дату-с-временем в число типа UInt8, содержащее номер квартала.

toMonth

Переводит дату или дату-с-временем в число типа UInt8, содержащее номер месяца (1-12).

toDayOfYear

Переводит дату или дату-с-временем в число типа UInt16, содержащее номер дня года (1-366).

toDayOfMonth

Переводит дату или дату-с-временем в число типа UInt8, содержащее номер дня в месяце (1-31).

toDayOfWeek

toHour

toMinute

Переводит дату-с-временем в число типа UInt8, содержащее номер минуты в часе (0-59).

toSecond

Переводит дату-с-временем в число типа UInt8, содержащее номер секунды в минуте (0-59).
Секунды координации не учитываются.

toUnixTimestamp

Синтаксис

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

Пример

toStartOfYear

Округляет дату или дату-с-временем вниз до первого дня года.
Возвращается дата.

toStartOfISOYear

toStartOfQuarter

toStartOfMonth

Округляет дату или дату-с-временем вниз до первого дня месяца.
Возвращается дата.

Возвращаемое значение для некорректных дат зависит от реализации. ClickHouse может вернуть нулевую дату, выбросить исключение, или выполнить «естественное» перетекание дат между месяцами.

toMonday

Округляет дату или дату-с-временем вниз до ближайшего понедельника.
Возвращается дата.

toStartOfWeek(t[,mode])

Округляет дату или дату со временем до ближайшего воскресенья или понедельника в соответствии с mode.
Возвращается дата.
Аргумент mode работает точно так же, как аргумент mode toWeek(). Если аргумент mode опущен, то используется режим 0.

toStartOfDay

Округляет дату-с-временем вниз до начала дня. Возвращается дата-с-временем.

toStartOfHour

Округляет дату-с-временем вниз до начала часа.

toStartOfMinute

Округляет дату-с-временем вниз до начала минуты.

toStartOfSecond

Отсекает доли секунды.

Синтаксис

Аргументы

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

Примеры

Пример без часового пояса:

Пример с часовым поясом:

Смотрите также

toStartOfFiveMinute

Округляет дату-с-временем вниз до начала пятиминутного интервала.

toStartOfTenMinutes

Округляет дату-с-временем вниз до начала десятиминутного интервала.

toStartOfFifteenMinutes

Округляет дату-с-временем вниз до начала пятнадцатиминутного интервала.

toStartOfInterval(time_or_data, INTERVAL x unit [, time_zone])

toTime

Переводит дату-с-временем на некоторую фиксированную дату, сохраняя при этом время.

toRelativeYearNum

Переводит дату-с-временем или дату в номер года, начиная с некоторого фиксированного момента в прошлом.

toRelativeQuarterNum

Переводит дату-с-временем или дату в номер квартала, начиная с некоторого фиксированного момента в прошлом.

toRelativeMonthNum

Переводит дату-с-временем или дату в номер месяца, начиная с некоторого фиксированного момента в прошлом.

toRelativeWeekNum

Переводит дату-с-временем или дату в номер недели, начиная с некоторого фиксированного момента в прошлом.

toRelativeDayNum

Переводит дату-с-временем или дату в номер дня, начиная с некоторого фиксированного момента в прошлом.

toRelativeHourNum

Переводит дату-с-временем в номер часа, начиная с некоторого фиксированного момента в прошлом.

toRelativeMinuteNum

Переводит дату-с-временем в номер минуты, начиная с некоторого фиксированного момента в прошлом.

toRelativeSecondNum

Переводит дату-с-временем в номер секунды, начиная с некоторого фиксированного момента в прошлом.

toISOYear

Переводит дату-с-временем или дату в число типа UInt16, содержащее номер ISO года. ISO год отличается от обычного года, потому что в соответствии с ISO 8601:1988 ISO год начинается необязательно первого января.

Пример

toISOWeek

Пример

toWeek(date[, mode][, timezone])

Переводит дату-с-временем или дату в число UInt8, содержащее номер недели. Второй аргументам mode задает режим, начинается ли неделя с воскресенья или с понедельника и должно ли возвращаемое значение находиться в диапазоне от 0 до 53 или от 1 до 53. Если аргумент mode опущен, то используется режим 0.

Описание режимов (mode):

ModeПервый день неделиДиапазонНеделя 1 это первая неделя …
0Воскресенье0-53с воскресеньем в этом году
1Понедельник0-53с 4-мя или более днями в этом году
2Воскресенье1-53с воскресеньем в этом году
3Понедельник1-53с 4-мя или более днями в этом году
4Воскресенье0-53с 4-мя или более днями в этом году
5Понедельник0-53с понедельником в этом году
6Воскресенье1-53с 4-мя или более днями в этом году
7Понедельник1-53с понедельником в этом году
8Воскресенье1-53содержащая 1 января
9Понедельник1-53содержащая 1 января

Для режимов со значением «с 4 или более днями в этом году» недели нумеруются в соответствии с ISO 8601:1988:

Если неделя, содержащая 1 января, имеет 4 или более дней в новом году, это неделя 1.

Для режимов со значением «содержит 1 января», неделя 1 – это неделя содержащая 1 января. Не имеет значения, сколько дней в новом году содержала неделя, даже если она содержала только один день.

Пример

toYearWeek(date[,mode])

Возвращает год и неделю для даты. Год в результате может отличаться от года в аргументе даты для первой и последней недели года.

Аргумент mode работает точно так же, как аргумент mode toWeek(). Если mode не задан, используется режим 0.

Пример

date_trunc

Отсекает от даты и времени части, меньшие чем указанная часть.

Синтаксис

Аргументы

unit — единица измерения времени, в которой задана отсекаемая часть. String Literal.
Возможные значения:

value — дата и время. DateTime или DateTime64.

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

Примеры

Запрос без указания часового пояса:

Запрос с указанием часового пояса:

Смотрите также

date_add

Добавляет интервал времени или даты к указанной дате или дате со временем.

Синтаксис

Аргументы

unit — единица измерения времени, в которой задан интервал для добавления. String.
Возможные значения:

value — значение интервала для добавления. Int.

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

Пример

date_diff

Вычисляет разницу между двумя значениями дат или дат со временем.

Синтаксис

Аргументы

unit — единица измерения времени, в которой будет выражено возвращаемое значение функции. String.
Возможные значения:

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

Пример

date_sub

Вычитает интервал времени или даты из указанной даты или даты со временем.

Синтаксис

Аргументы

unit — единица измерения времени, в которой задан интервал для вычитания. String.
Возможные значения:

value — значение интервала для вычитания. Int.

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

Пример

timestamp_add

Добавляет интервал времени к указанной дате или дате со временем.

Синтаксис

Аргументы

unit — единица измерения времени, в которой задан интервал для добавления. String.
Возможные значения:

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

Пример

timestamp_sub

Вычитает интервал времени из указанной даты или даты со временем.

Синтакис

Аргументы

unit — единица измерения времени, в которой задан интервал для вычитания. String.
Возможные значения:

value — значение интервала для вычитания. Int.

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

Пример

Возвращает текущую дату и время.

Синтаксис

Параметры

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

Пример

Запрос без указания часового пояса:

Запрос с указанием часового пояса:

today

Возвращает текущую дату на момент выполнения запроса. Функция не требует аргументов.
То же самое, что toDate(now())

yesterday

timeSlot

timeSlots(StartTime, Duration,[, Size])

toYYYYMM

Переводит дату или дату со временем в число типа UInt32, содержащее номер года и месяца (YYYY * 100 + MM).

toYYYYMMDD

Переводит дату или дату со временем в число типа UInt32, содержащее номер года, месяца и дня (YYYY * 10000 + MM * 100 + DD).

toYYYYMMDDhhmmss

Переводит дату или дату со временем в число типа UInt64 содержащее номер года, месяца, дня и время (YYYY * 10000000000 + MM * 100000000 + DD * 1000000 + hh * 10000 + mm * 100 + ss).

formatDateTime

Функция преобразует дату-и-время в строку по заданному шаблону. Важно: шаблон — константное выражение, поэтому использовать разные шаблоны в одной колонке не получится.

Синтаксис

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

Возвращает значение времени и даты в определенном вами формате.

Поля подстановки

Пример

dateName

Возвращает указанную часть даты.

Синтаксис

Аргументы

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

Пример

FROM_UNIXTIME

Функция преобразует Unix timestamp в календарную дату и время.

Примеры

Если указан только один аргумент типа Integer, то функция действует так же, как toDateTime, и возвращает тип DateTime.

В случае, когда есть два аргумента: первый типа Integer или DateTime, а второй является строкой постоянного формата — функция работает также, как formatDateTime, и возвращает значение типа String.

Источник

Округление даты и времени в SQL Server

Если нужно просто обрубить дату, то можно поступить так:

Где-то я видел пример, в котором автор зачем-то прибавлял и отнимал дату ‘20000101’:

Результат идентичный предыдущему, а смысла в действии я не понял

Есть еще вариант с использованием конвертации:

Функцию CONVERT также удобно использовать, если нужно вырезать время из типа данных DateTime сервера MS SQL:

Пример выше вернет время вплоть до секунды. Если нужно только часы и минуты, то можно обрезать дату и до минут:

Кстати, однажды мне пришлось группировать данные по времени. Нужно было узнать, в какое время чаще входили пользователи. Просто нужно округлить дату до часа и проблема решена:

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

Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым

А еще поделитесь с друзьями

Комментарии

Английский мне понятен, но SQL нет (хотя на первом курсе в универе проходили в образовательных целях недельку другую), просто опытный пользователь ПК. Смотрю виджеты поставили, «мне нравится», «поделиться» etc, хотя я крот, может просто раньше не видел.

Похоже я хомячком стал или любителем блога 🙂

daneska

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

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

У меня полно англоязычных ресурсов и у меня есть книги на английском, но я не разу не получил писма на английском, в котором бы говорилось, что я урод. На русском такие письма и комментарии приходят раз в неделю. Просто гандонов у нас на много больше. Если кто-то находит ошибку другого, то начинает магать соседа в грязь. Я работал какое-то время в питерской компании, где опустить соседа морально за любую ошибку было нормой и они каждый день занимались опусканием друг-друга. Оно вроде бы делалось в виде шуток, но все равно, смотреть противно.

В России уже пятница, а у меня все еще четверг. Ка же я завидую вам. Год был достаточно тяжелый и я как-то подустал. Особенно если учесть, что у меня не было отпуска в этом году. Надеюсь, что на рождество дадут каникулы.

Сейчас смотрю видео с запуска Microsoft Linc и уже прошло 20 минут, а я так и не понял, что это за фигня и как ее использовать. Я уже дважды понял, что этот продукт идеально подходит к MS Office, SharePoint и MS Exchange, но я не понял, нафига оно мне нужно. Я понял, что Linc позволяет устраивать конференции и звонить друг-другу и именно это показывают в начале презентации. На большой экран проецируется звонок Биллу Гейтсу в HD качестве. Я так впечетлен, что еще больше не понял, зачем мне нужно платить за это деньги, когда я могу звонить через Skype или любую другую программу.

По прошествии получаса у меня еще больше сложилось впечатление, что мне хотят впарить платный Live Messenger, который просто можно скачать бесплатно. Ну да, в Linc чуть больше интеграфии с телефоном, но оно мне надо? Не вижу смысла платить за такую фигню деньги.

Olegmaster подтолкнул меня на одну очень серьезную мыслю. Почему хакеры Линукс обходят Демо-сцену стороной? Демок под Windows и MS DOS полно. Она существовала на ZX-Spectrum, Amiga, Atari. Но я не слышал, чтобы на Демо парти проходили конкурсы на демки в Linux платформе. Может где-то и были такие конкурсы, но они явно прошли незаметно по сравнению с Windows платформенными демками.

Неужели графическая система Linux вообще не пригодна для того, чтобы выжимать из нее максимум и показывать графические шедевры? Количество хакеров и свободных программистов под Linux такое, что по идее такая свободная культура как демо сцена просто обязана была бы очутиться в Linux.

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

Источник

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

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