sql разница дат в днях

Функция DATEDIFF стр. 2

Задача. Посчитать число минут в интервале между двумя датами – ‘2011-10-07 23:43:00’ и ‘2011-10-08 01:23:00’

SQL Server

Встроенная функция DATEDIFF решает проблему:

Результат – 100 минут.

В запросе используется стандартное представление даты (ISO) в виде текстовой строки ‘yyyy-mm-ddThh:mm:ss’, которое не зависит ни от локальных настроек сервера, ни и от самого сервера.

MySQL

Один день мы получим даже в случае, если интервал между датами составляет все одну секунду:

PostgreSQL

В PostgreSQL нет функции, подобной DATEDIFF (SQL Server) или TIMESTAMPDIFF (MySQL). Поэтому для решения задачи можно применить следующую последовательность действий:

Для получения интервала можно взять разность двух значений темпорального типа, При этом требуется явное преобразование типа:

Для получения числа секунд в интервале воспользуемся функцией

Значение интервала представим последним способом как наиболее коротким. Для получения окончательного решения задачи поделим полученный результат на 60:

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

Oracle

Oracle тоже не имеет в своем арсенале функции типа DATEDIFF. Кроме того, Oracle не поддерживает стандартное текстовое представление даты/времени.

Мы можем посчитать интервал в минутах, приняв во внимание, что разность дат (значений типа date ) в Oracle дает в результате число дней (суток). Тогда для вычисления интервала в минутах нужно просто разность дат умножить на 24 (число часов в сутках), а затем на 60 (число минут в часе):

Подобным образом можно получить и другие временные интервалы.

Источник

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

Базы данных

SQL Server функция DATEDIFF

В этом учебном пособии вы узнаете, как использовать функцию DATEDIFF в SQL Server (Transact-SQL) с синтаксисом и примерами.

Описание

В SQL Server (Transact-SQL) функция DATEDIFF возвращает разность между двумя значениями даты в зависимости от указанного интервала.

Синтаксис

Синтаксис функции DATEDIFF в SQL Server (Transact-SQL):

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

Значение (любое из)Пояснение
year, yyyy, yyГод интервал
quarter, qq, qКвартал интервал
month, mm, mМесяца интервал
dayofyearДень года интервал
day, dy, yДень интервал
week, ww, wkНеделя интервал
weekday, dw, wДень недели интервал
hour, hhЧас интервал
minute, mi, nМинуты интервал
second, ss, sСекунды интервал
millisecond, msМиллисекунды интервал
microsecond, mcsМикросекунды интервал
nanosecond, nsНаносекунды интервал

Применение

Функция DATEDIFF может использоваться в следующих версиях SQL Server (Transact-SQL):
SQL Server vNext, SQL Server 2016, SQL Server 2015, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008, SQL Server 2005

Пример

Рассмотрим некоторые примеры SQL Server функции DATEDIFF, чтобы понять, как использовать функцию DATEDIFF в SQL Server (Transact-SQL). Например:

Источник

Разница между двумя датами в MySQL

Как вычислить разницу между двумя датами в формате YYYY-MM-DD hh: mm: ss и получить результат в секундах или миллисекундах?

13 ответов

Итак, вы можете использовать TIMESTAMPDIFF для ваших целей.

Если вы работаете со столбцами дат (или можете использовать их как столбцы дат), попробуйте DATEDIFF (), а затем умножьте на 24 часа, 60 минут, 60 секунд (поскольку DATEDIFF возвращает diff в днях). С MySQL:

получить разницу дат в днях с помощью DATEDIFF

или вы можете использовать функцию TIMEDIFF

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

этот код вычисляет разницу между двумя датами в формате гггг мм dd.

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

%d%m%Y-ваш формат даты

этот запрос отображает запись между днями, которые вы установили там, как: ниже от последних 7 дней и выше от последних 14 дней, так что это будет ваша последняя запись недели, чтобы отобразить ту же концепцию для месяца или года. Независимо от значения, которое вы предоставляете ниже даты, как: ниже от 7-дней, поэтому другое значение будет его двойным, как 14 дней. То, что мы говорим здесь, получает все записи выше за последние 14 дней и ниже за последние 7 дней. Это запись недели вы можете изменить значение на 30-60 дней в течение месяца, а также в течение года.

Источник

DATEDIFF (Transact-SQL)

Эта функция возвращает количество пересеченных границ (целое число со знаком), указанных в аргументе datepart, за период времени, указанный в аргументах startdate и enddate.

Сведения о функции, которая обрабатывает значительные отличия значений аргументов startdate и enddate, см. в статье DATEDIFF_BIG (Transact-SQL). Обзор всех типов данных и функций даты и времени в языке Transact-SQL см. в статье Типы данных и функции даты и времени (Transact-SQL).

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

Синтаксис

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

Аргументы

В приведенной ниже таблице перечислены все допустимые значения datepart. Функция DATEDIFF принимает либо полное имя datepart, либо любое приведенное сокращение полного имени.

Имя datepartСокращение datepart
yearyy, yyyy
quarterqq, q
monthmm, m
dayofyeardy, y
daydd, d
weekwk, ww
hourhh
minutemi, n
secondss, s
millisecondms
microsecondmcs
nanosecondns

Каждое конкретное имя аргумента datepart и сокращение этого имени datepart будут возвращать одно и то же значение.

startdate
Выражение, которое может быть разрешено в одно из следующих значений.

Во избежание неоднозначности используйте четырехзначную запись года. Сведения о двузначном обозначении года см. в статье Настройка параметра конфигурации сервера two digit year cutoff.

enddate
См. описание аргумента startdate.

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

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

Значение типа int, представляющее разницу между аргументами startdate и enddate в границах, определяемых аргументом datepart.

В качестве возвращаемого значения вне диапазона для int (от –2 147 483 648 до 2 147 483 647) DATEDIFF возвращает сообщение об ошибке. Для миллисекунды максимальная разница между startdate и enddate составляет 24 дня 20 часов 31 минута и 23 647 секунд. Для секунды максимальная разница составляет 68 лет, 19 дней, 3 часа, 14 минут и 7 секунд.

Если обоим аргументам, startdate и enddate, присвоено только значение времени, а аргумент datepart не содержит значения времени datepart, то DATEDIFF возвращает значение 0.

При вычислении возвращаемого значения DATEDIFF использует компонент смещения часовых поясов для аргументов startdate или enddate.

Так как значение типа smalldatetime имеет точность до минуты, то при использовании в аргументах startdate и enddate значений типа smalldatetime секунды и миллисекунды у возвращаемых значений всегда равны 0.

Если аргументы startdate и enddate имеют разные типы данных даты, но при этом один из них имеет больше частей времени или обладает более высокой точностью, DATEDIFF присваивает значения 0 недостающим частям другого аргумента.

Границы, задаваемые аргументом datepart

Приведенные ниже инструкции имеют одинаковые значения аргументов startdate и enddate. Указанные даты являются соседними, а временная разница между ними составляет 100 наносекунд (0,0000001 секунды). Разница между аргументами startdate и enddate в каждой инструкции пересекает одну календарную или временную границу аргумента datepart. Каждое выражение возвращает значение 1.

Если аргументы startdate и enddate имеют разные значения года, но одинаковые значения календарной недели, DATEDIFF вернет 0 для части week аргумента datepart.

Remarks

Функция DATEDIFF неявно приводит строковые литералы к типу datetime2. Это означает, что DATEDIFF не поддерживает формат ГЧМ (год, число, месяц) при передаче даты в виде строки. Для использования формата ГЧМ (год, число, месяц) необходимо явно привести строку к типу datetime или smalldatetime.

DATEDIFF может переполняться с точностью до минуты или более низкой точностью, если разница между enddate и startdate представляет собой значение, выходящее за пределы диапазона, допустимого для int.

Примеры

В этих примерах выражения различного типа используются в качестве аргументов для параметров startdate и enddate.

A. Указание столбцов в качестве начальной и конечной даты

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

Б. Указание определенных пользователем переменных в качестве начальной и конечной даты

В этом примере в качестве аргументов startdate и enddate выступают определенные пользователем переменные.

В. Указание скалярных системных функций в качестве начальной и конечной даты

В этом примере в качестве аргументов startdate и enddate выступают скалярные системные функции.

Г. Указание скалярных вложенных запросов и скалярных функций в качестве начальной и конечной даты

В этом примере в качестве аргументов startdate и enddate выступают скалярные вложенные запросы.

Д. Указание констант в качестве начальной и конечной даты

В этом примере в качестве аргументов startdate и enddate используются символьные константы.

Е. Указание числовых выражений и скалярных системных функций в качестве конечной даты

Ж. Указание ранжирующих функций в качестве начальной даты

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

З. Указание агрегатной оконной функции в качестве начальной даты

В этом примере в качестве аргумента startdate используется агрегатная оконная функция.

И. Определение разницы между startdate и enddate в виде строковых компонентов даты

Примеры: Azure Synapse Analytics и Система платформы аналитики (PDW)

В этих примерах выражения различного типа используются в качестве аргументов для параметров startdate и enddate.

К. Указание столбцов в качестве начальной и конечной даты

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

Л. Указание скалярных вложенных запросов и скалярных функций в качестве начальной и конечной даты

В этом примере в качестве аргументов startdate и enddate выступают скалярные вложенные запросы.

М. Указание констант в качестве начальной и конечной даты

В этом примере в качестве аргументов startdate и enddate используются символьные константы.

Н. Указание ранжирующих функций в качестве начальной даты

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

О. Указание агрегатной оконной функции в качестве начальной даты

В этом примере в качестве аргумента startdate используется агрегатная оконная функция.

Источник

Разница двух дат времени в SQL Server

Есть ли способ принять разницу между двумя datetime в SQL Server?

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

Заменить «MyUnits» на основе DATEDIFF на MSDN

Я могу упомянуть четыре важные функции MS SQL Server, которые могут быть очень полезны:

1) Функция DATEDIFF () отвечает за вычисление различий между двумя датами, результатом может быть «год четверть месяца день года год день неделя минута вторая миллисекунда микросекунда наносекунда», указанная для первого параметра (datepart):

4) Функция CONVERT () была создана для форматирования даты так, как вам нужно, это не параметрическая функция, но вы можете использовать часть результата для форматирования результата так, как вам нужно:

DATETIME рассчитывается в секундах, и один интересный результат, смешивающий эти четыре функции, заключается в том, чтобы показать отформатированную разницу между часами, минутами и секундами (чч: мм: сс) между двумя датами:

. результат 00:10:38 (638 с = 600 с + 38 с = 10 минут и 38 секунд)

Есть несколько способов взглянуть на разницу дат, и даже больше при сравнении даты/времени. Вот что я использую, чтобы получить разницу между двумя датами в формате «ЧЧ: ММ: СС»:

Я использовал это для вычисляемого столбца, но вы могли бы просто переписать его как UDF или вычисление запроса. Обратите внимание, что эта логика округляет доли секунды; От 00: 00.00 до 00: 00.999 считается равным нулю секунд и отображается как «00:00:00».

Если вы предполагаете, что периоды могут длиться более нескольких дней, этот код переключается в формат D: HH: MM: SS, когда это необходимо:

Я попробовал этот способ, и это сработало. Я использовал SQL Server версии 2016

Различные функции DATEDIFF:

Следующий запрос должен дать именно то, что вы ищете.

Это даст вам что-то вроде:

Источник

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

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