Sql как получить вчерашнюю дату

Sql, как получить вчерашнюю дату

T-SQL предоставляет ряд функций для управления датами и временем:

GETDATE: возвращает текущую локальную дату и время в соответствии с системными часами. как объект даты и времени

GETUTCDATE: возвращает текущую локальную дату и время UTC/GMT как объект даты и времени

SYSDATETIME: возвращает текущую локальную дату и время на основе системных часов, но отличается от GETDATE тем, что дата и время возвращаются как объект datetime2

SYSUTCDATETIME : возвращает текущую локальную дату и время UTC/GMT как объект datetime2

SYSDATETIMEOFFSET : возвращает datetimeoffset( 7 ), содержащий дату и время относительно GMT

ДЕНЬ: возвращает день даты, переданной в качестве параметра

МЕСЯЦ: возвращает месяц даты

ГОД: возвращает год из даты

DATENAME : возвращает часть даты в виде строки. Параметр выбора части даты передается в качестве первого параметра, а сама дата передается в качестве второго параметра:

Следующие параметры могут использоваться для определения части даты (в скобках указаны сокращенные версии):

год (гг , гггг) : год

четвертый (qq, q) : четвертый

месяц (мм, м) : месяц

день года (dy, y) : день года

день (dd, d) : день месяца

неделя (week, week) : неделя

день неделя (dw): день недели

минуты (mi, n) : минуты

секунды (ss, s) : секунды

миллисекунды (ms) : миллисекунды

микросекунда (мкс) : микросекунда

наносекунда (нс): наносекунда

tzoffset (tz) : смещение в минутах от GMT (для объекта datetimeoffset)

DATEPART — возвращает часть даты в виде числа. Параметр выбора части даты передается в качестве первого параметра (с использованием тех же параметров, что и для DATENAME), а сама дата передается в качестве второго параметра:

DATEADD: возвращает дату, полученную в результате добавления числа к конкретная папка данных. Первый параметр представляет компонент даты, описанный выше для функции DATENAME. Второй параметр — это сумма, которую необходимо добавить. Третий параметр — это сама дата, к которой вы хотите добавить:

Если сумма, которую вы хотите добавить, является отрицательным числом, то дата фактически будет уменьшена.

РАЗНИЦА ДАТЫ: возвращает разница между двумя датами. Первый параметр — это компонент данных, который указывает единицы измерения разницы. Второй и третий параметры — это даты для сравнения:

TODATETIMEOFFSET — возвращает значение смещения даты и времени, полученное в результате добавления смещения времени к другому объекту смещения времени

SWITCHOFFSET: возвращает значение смещения даты и времени, полученное в результате добавление смещения времени к объекту datetime2

КОНМЕСЯЦА: возвращает дату последнего дня месяца, используемого в заданной дате.

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

DATEFROMPARTS: создает дату на основе года, месяца и дня

ISDATE: проверяет, является ли выражение датой. Если да, возвращает 1; в противном случае возвращается 0.

Примером использования функций является создание таблицы заказов, содержащей дату заказа:

Выражение DEFAULT GETDATE() указывает, что если оно не передано date при добавлении даты автоматически вычисляется с помощью функции GETDATE().

Другой пример: найти заказы, которые были размещены 16 дней назад:

Источник

Типы данных и функции даты и времени (Transact-SQL)

Применяется к: SQL Server (все поддерживаемые версии) Базе данных SQL Azure Управляемый экземпляр Azure SQL Azure Synapse Analytics

разделов этой статьи содержит обзор всех типов данных и функций Transact-SQL даты и времени.

Типы данных даты и времени

Перечислены типы данных даты и времени Transact-SQL. в следующей таблице:

Тип данных Формат Диапазон Точность Размер памяти (в байтах) Определяемая пользователем точность в долях секунд Смещение часового пояса
час чч: мм : сс[.nnnnnn] от 00:00:00,0000000 до 23:59:59,9999999 100 наносекунд 3–5 Да Нет
дата ГГГГ-ММ-ДД 0001-01-01 по 31/12/99 1 день 3 Нет Нет
smalldatetime ГГГГ-ММ-ДД чч:мм :сс С 1/1/1900 по 6/6/2079 1 минута 4 нет нет 0,00333 секунды 8 Нет Нет
дата и время2 ГГГГ — ММ — ДД чч : мм : сс [ . nnnnnn ] 0001 — 01 — 01 00 : 00 : 00 99-12-31 23:59:59.9999999 100 наносекунд от 6 до 8 Да Нет
datetimeoffset ГГГГ-ММ-ДД чч:мм:сс[.nnnnnn] [+ Функция интерфейса Windows GetSystemTimeAsFileTime() API. Точность зависит от физического оборудования и версии Windows, в которой работает экземпляр SQL Server. Точность возвращаемых значений этого API установлена ​​на 100 нс. Точность можно определить с помощью метода GetSystemTimeAdjustment() API Windows.

Источник

MySQL выбирает вчерашнюю дату

Как я могу отобразить и рассчитать values ​​, даты которых вчера? Я использовал time() для вставки даты в базу данных. Пример:

Я хочу отобразить, сколько URL-адресов существует в таблице, а также сколько из этих URL-адресов было посещено вчера. Пример вывода:

Я уже знаю, как получить вчерашнюю дату, но не знаю, как подсчитать, сколько раз URL-адрес существовал вчера и как долго этот URL-адрес существовал в таблице.

7 ответов

Лучший и самый простой способ получить вчерашнюю дату:

для любопытных, причина сумма(условие) дает количество строк, которые удовлетворяют условию что в противном случае потребовало бы громоздкий и подробный случай заключается в том, что в логических значениях mysql 1 означает истину, а 0 — ложь, поэтому сумма условия эффективно подсчитывает, сколько раз оно истинно. Вы можете использовать этот шаблон для очистки кода SQL.

где функция now() возвращает текущую системную дату и время в отметке времени.

вы можете использовать:

вы можете получить вчерашнюю дату, используя CAST(NOW() — INTERVAL 1 DAY AS DATE) . Что-то вроде этого может сработать:

вы можете использовать:

Запрос прошлой недели:

Я отредактировал один из ответов cdhowie выше, потому что не смог заставить его работать. Этот, кажется, работает для меня. Я подозреваю, что это также можно сделать с помощью функции UNIX_TIMESTAMP.

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

Если вы просто хотите простая дата без метки времени, вы также можете написать так:

Причина использования CAST и SUBDATE заключается в том, что CAST является синтаксисом ANSI SQL. SUBDATE — это специфичная для MySQL реализация арифметического компонента даты CAST. Привыкание к использованию синтаксиса ANSI может уменьшить головную боль, если вам нужно переключиться на другую базу данных. Также рекомендуется заняться профессиональной практикой, так как в будущем вы почти наверняка будете работать с другими системами СУБД.

Ни одна из основных систем СУБД не является полностью совместимой с ANSI, но большинство Синтаксис ANSI, в то время как почти никто за пределами MySQL и его потомков (MariaDB, Percona и т. д.) не будет реализовывать синтаксис, специфичный для MySQL.

Источник

SQL — Урок 2: Работа с датами и временем

База данных › SQL Урок 2: Работа с датами и временем

  • В этой теме 0 ответов, 1 участник, последнее обновление 3 года назад , 10 месяцев Васильев Владимир Сергеевич.

Литералы

Литералы используются для непосредственного представления данных, ниже приведен список
стандартных литералов:

  • целые числа — 0 , -34, 45;
  • ток — 0,0, -3,14, 3,23е-23;
  • строка — ‘текст’, n’текст’, ‘нет!’;
  • дата ДАТА ‘2008-01-10’;
  • час — ВРЕМЯ ’15:12:56′;
  • метка времени — TIMESTAMP ‘2008-02-14 13:32:02’;
  • boolean — истина, ложь;
  • пустое значение равно нулю.

Двойной апостроф в строковом литерале интерпретируется как апостроф в тексте.

В MySQL для временных литералов строка должна быть заключена в круглые скобки: ДАТА (‘ 2008-01-10 ‘).

Формат даты по умолчанию обычно определяется настройками базы данных. Расширенная СУБД может
автоматически определять некоторые форматы (DATE (‘2008.01.10’))
или то, как Oracle имеет функцию преобразования (to_date(‘01.02.2003′,’dd.mm.yyyy’)).
Для простоты во многих СУБД, где подразумевается дата, перед
не обязательно должна стоять строка с именем типа.

Временной интервал

Синтаксис и реализация интервалов варьируется в разных СУБД.

Oracle

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

PostgreSQL

интервалы указываются в виде строки со значением и типом интервала:

  • микросекунды — микросекунды;
  • миллисекунды — миллисекунды;
  • секунды — секунды;
  • минуты — минуты;
  • час — часы;
  • день — дни;
  • недель — недель;
  • мес — мес;
  • год — лет;
  • в. — в.;
  • тысячелетие это тысячелетие.

Слова также могут использоваться во множественном числе.
Если диапазон начинается с дней, вы можете использовать формат короткой строки, такой как
в Oracle для диапазонов дней.

MySQL

Только составные диапазоны, состоящие из более чем одного типа интервала.
Для этих целей, по сравнению с PostgreSQL, введены дополнительные названия пробелов:

  • second_microsecond — секунды и микросекунды, строковый формат ‘s. м’;
  • minute_microsecond : минуты и микросекунды, строковый формат ‘m.m’;
  • minute_second : минуты и секунды, строковый формат ‘m:s’;
  • час_микросекунда — часы и микросекунды, строковый формат ‘h.m’;
  • час_секунда — часы, минуты и секунды, строковый формат ‘ч:м:с’;
  • час_минута : часы и минуты, строковый формат ‘ч:м’;
  • day_microsecond — день и микросекунды, строковый формат ‘d.m’;
  • day_second — дни, часы, минуты и секунды, строковый формат ‘d h:m:s’;
  • день_минута — дни, часы и минуты, строковый формат ‘д ч:м’;
  • day_hour — дни и часы, строка формата ‘d h’;
  • год_месяц : годы и месяцы, строковый формат ‘г-м’.

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

Выражения и операции

Для построения SQL-выражений он включает стандартные операции, ряд других
предикатов (булевых конструкций) и функций. В MySQL для встроенных функций не должно быть пробелов между именем и открывающей скобкой
, иначе появится сообщение об отсутствии такой функции в базе данных.
Oracle не поддерживает логические выражения в выбранном перечислении.

строковые операции

добавляют целое число, но результат зависит от конкретной СУБД.

операции отношений

  • — больше;
  • >= — больше или равно;
  • = равно;
  • <> , != не равно;

логические операции и предикаты

  • и — логика и;
  • или — логическое значение или;
  • ни — отрицание;
  • между : определяет, находится ли значение в указанном диапазоне:

выражение МЕЖДУ значение_от И значение_до существует : определяет если есть хотя бы одна запись

СУЩЕСТВУЕТ (выбрать . )
Для скорости в подзапросе обычно выбирается константа,а не поле записи, т.к.
как в данном случае нас не интересует данные, но в которых записи существуют; в : определяет, находится ли указанное значение в указанном наборе:

выражение IN (значение1.значение)

Допустимый шаблон может служить набором значений

Выражение IN (выберите . ) равно NULL — если указанное выражение равно NULL:

выражение IS NULL as — определяет, соответствует ли строка указанному pattern:

string_expression LIKE pattern [ESCAPE esc_symbol]
Символ % в шаблоне интерпретируется как строка любой длины, символ _
— как любой символ. Конструкция ESCAPE esc_symbol задает символ ESCAPE
в последовательности, которая переопределяет обычную интерпретацию символов ‘_’ и ‘%’.
Предикаты SIMILAR и LIKE_REGEX включены в последние стандарты для расширения
возможностей LIKE с помощью регулярных выражений, таких как шаблон.

условные выражения

  • case — условный оператор со следующим синтаксисом:
  • decode (expr,s1,r1[,sn,rn][,defr]) — сравнивает выражение с каждым if
    в списке. Если выражения equal, возвращается значение, равное ri. Если ни одно из
    выражений в списке не равно выражению, возвращается функция defr или NULL, если функция defr не указана.
    Эта функция доступна только в Oracle и в большинстве случаев заменяет оператор CASE;
  • merge (arg1,…,argn) — возвращает первый ненулевой аргумент списка. Для двух аргументов
    в Oracle вы можете использовать функцию nvl;
  • самый большой (arg1,…,argn) — возвращает самый большой аргумент в списке;
  • хотя бы (arg1,…,argn) — возвращает наименьший аргумент в списке;
  • nullif ((arg1,arg2) — возвращает null, если оба аргумента равны, иначе первый аргумент
    .

Ниже приведен пример использования выражения в запросе для выбора данных.

другие операции

Каждая СУБД имеет свой набор операций, наиболее часто используемые из которых перечислены выше.
Например, в PostgreSQL могут использоваться следующие операции:

  • ^ — возведение в степень;
  • факториалы;
  • @ — абсолютное значение

Обзор функций

В арсенале каждой СУБД есть набор встроенных функций для
обработка стандартных типов данных. В MySQL для встроенных функций не должно быть пробелов между именем и открывающей скобкой
, иначе БД сообщит об отсутствии такой функции
. В некоторых СУРБД, такие как Oracle, если функция не имеет аргументов,
, то круглые скобки можно опустить.

математические функции

  • абс ( x ) — абсолютная величина;
  • ceil (x) — наименьшее целое число, не меньшее аргумента;
  • exp (x) — показатель степени;
  • этаж (x) — наибольшее целое число, не превышающее аргумент;
  • ln (x) — натуральный логарифм;
  • степень (x,y) — возвести x в степень y;
  • округлить (x [,y]): округляет цифры от x до y справа от десятичной точки. Значение по умолчанию
    и равно 0;
  • символ (x) — возвращает -1 для отрицательных значений x и 1 для положительных значений;
  • квадратный корень (х) — квадратный корень;
  • trunc (x [,y]) — усекает x до y десятичных разрядов. Если y равно 0
    (по умолчанию), то x усекается до целого числа. Если y меньше 0, цифры
    слева от десятичной точки отбрасываются.

Триггерные функции работают с радианами:

строковые функции

  • ascii (строка) — возвращает код первого символа , эта функция является обратной функцией CHR;
  • cro (x) — возвращает символ с номером x, в MySQL это функция char;
  • длина (строка) — возвращает длину строки;
  • нижний (строка) — уменьшить размер букв;
  • верхний (строка) — увеличивает размер букв;
  • ltrim (строка1[, строка2]) — удаляет слева от первой строки все символы
    , найденные во второй строке. Если вторая строка отсутствует, пробелы удаляются. В Второй аргумент MySQL
    не поддерживается;
  • rtrim (string1[, string2]): аналогично функции ltrim, удаляется только тег
    справа;
  • trim (строка) — удаляет пробелы с обоих концов строки;
  • lpad (string1, n[, string2]) — заполняет первую строку слева n символами из второй строки
    , при необходимости удваивая вторую строку. Если строка2 не указана, используется пробел
    ;
  • rpad (string1, n[, string2]): аналогично функции lpad, только справа добавляется
    ;
  • replace (string1, c1, c2) — заменяет все вхождения символа/подстроки c1 на c2.
    Чтобы просто удалить все вхождения c1 ,
    пустая строка («). В Oracle третий аргумент является необязательным и по умолчанию равен пустой строке;
  • instr ( string1, string2[, a][, b]) — возвращает b вхождение строки2
    в строку1, начиная с позиции a. Если a отрицательное, поиск выполняется правильно.
    по умолчанию, a и b установлены на 1 .Последние два аргумента не поддерживаются в MySQL.
    В PostgreSQL нет этой возможности, однако ее реализация предусмотрена в документации, только для
    совместимости с Oracle;
  • substr (string, pos, len) — возвращает подстроку из позиции pos и длины len

работа с данными

В рассматриваемой СУБД мало общего для обработки time.Oracle минимальный минимум:

  • current_date — глобальная переменная, содержащая текущую дату. можно использовать в других СУБД;
  • trunc (d,s) — устанавливает дату на начало указанной метки времени, например, на начало месяца.
    PostgreSQL имеет аналогичную функцию date_trunc(s,d). MySQL может
    использовать для этой цели функцию date_format(d,s), но она возвращает результат в виде строки;
  • add_months (d,n) — добавить к дате указанное количество месяцев;
  • last_day (d) — последний день месяца, содержащегося в аргументе;
  • month_between (d1,d2) — возвращает количество месяцев между датами.

Ниже приведены допустимые форматы строковых параметров для функций trunc и date_trunc:

  • четвертый — q, четвертый;
  • гггг, год;
  • месяц — мм, месяц;
  • неделя — ww, неделя;
  • день — дд, день;
  • час — чч, час;
  • минута — моя, минутка.

Функции типа last_day в других СУБД реализованы с использованием арифметики времени и преобразования типов.
Затем, если хотите, можете написать соответствующую функцию. Далее следует получение последнего дня указанной даты.

Преобразование типов

Набор типов, разрешенных для преобразования в конструкциях CAST AS, определяется
реализацией СУБД. Таким образом, MySQL может преобразовывать только следующие типы: двоичный [(n)],
char[(n)], date, datetime, decimal[(m[,d])], signed [integer], time без знак [Весь].
И в Oracle, в дополнение к преобразованию встроенных типов вы можете преобразовать выборки с
многими элементами в массивы.

PostgreSQL имеет более продвинутые возможности преобразования. Во-первых, вы можете добавить пользовательское преобразование
для встроенных и пользовательских типов. Во-вторых,
имеет свой собственный более удобный оператор преобразования типов.

В большинстве случаев вам нужно преобразовать в строку или из строки. На этот случай в СУБД предусмотрены дополнительные функции.

Функции Oracle

  • to_char (date [,format[,nlsparams]]) — дата в строку;
  • to_char (number [,format[,nlsparams]]) — число в строку;
  • до даты (string[,format[,nlsparams]]) — строка до даты;
  • to_number ( string [ ,format[, nlsparams] ]) — строка в число;
  • to_timestamp (строка, формат) — строка для отметки времени.

В этих функциях формат — это описание формата даты или числа, а nlsparams — это
национальные параметры. Строковый формат даты определяется следующими элементами:

  • «» — заключает введенный текст в кавычки;
  • А.Д., А.Д. — вставить AD с точками или без точек;
  • БК, БК — вставляет ВС с точками или без точек;
  • CC, SCC : вставляет столетие, SCC возвращает солнечные даты в виде отрицательных чисел;
  • D — вставляет день недели;
  • ДЕНЬ : вставляет название дня, дополненное пробелами длиной до девяти символов;
  • ДД — вставляет день месяца;
  • DDD — вставляет день года;
  • DY1 — вставляет сокращенное название дня;
  • FF2 : вставка долей секунды независимо от системы счисления;
  • НН, НН12 — вставляет час дня (от 1 до 12);
  • НН24 — вставляет час дня (от 0 до 23);
  • МИ — вставить минуты;
  • ММ — вставляет номер месяца;
  • MOMn — вставляет сокращенное название месяца;
  • MESn : вставляет название месяца с пробелами длиной до девяти символов;
  • RM : вставка месяца римскими цифрами;
  • RR — вставить две последние цифры года;
  • ГГГГ — вставить год целиком;
  • СС — вставить секунды;
  • SSSSS — вставляет количество секунд от полуночи;
  • WW : вставляет номер недели в году (неделя — это 7 дней с первого дня, а не с понедельника по воскресенье);
  • W — вставляет номер недели месяца;
  • Г.ГГГ : вставляет год с запятой в указанной позиции;
  • ГОД, ГОД : вставляет год, ГОД возвращает солнечные даты в виде отрицательных чисел;
  • YYYY, SYYYY вставляет четырехзначный год, SYYYY возвращает солнечные даты в виде отрицательных чисел;
  • ГГГ, ГГ, Г — вставляет соответствующее количество последних цифр года.

Формат числовой строки определяется следующими элементами:

  • $ : вставляет знак доллара перед числом;
  • B — вставить пробелы для целой части десятичного числа, если ноль;
  • MI : в конце ставится знак минус (например, ‘999,999mi’);
  • S : вставляет цифровой символ в начало или конец (например, «s9999» или «9999s»);
  • PR : Запишите отрицательное число в фигурных скобках (например, ‘999,999pr’);
  • D : вставляет десятичный разделитель в указанную позицию (например, ‘999D999’);
  • G – вставляет разделитель групп в указанную позицию (например, ‘9G999G999’). При этом дробная часть числа отбрасывается;
  • С : вставить идентификатор валюты ISO в начале или в конце номера (например, «с9999» или «9999с»);
  • L : вставляет символ местной валюты в начало или конец числа (например, «l9999» или «9999l»);
  • , : вставляет запятую в указанную позицию независимо от разделителя групп;
  • . : вставляет десятичную точку в указанную позицию независимо от разделителя десятичной точки;
  • V : возвращает значение, умноженное на 10^n, где n — количество девяток после V. Это значение необязательно округляется;
  • EEEE — 9.99EEEE возвращает экспоненциальное представление;
  • RM — значение RM будет написано большими римскими цифрами;
  • rm : значение rm будет записано маленькими римскими цифрами;
  • 0 : вставляет нули вместо пробелов в начале или конце строки, например,
    9990 вставляет нули вместо пробелов в конце строки;
  • 9 — каждая 9 определяет значащую цифру.

PostgreSQL function

  • to_char (отметка времени, формат) — строковое время;
  • to_char (interval, format) — интервал времени в строке;
  • to_char (число, формат) — число в строку;
  • to_date (строка, формат) — строка до даты;
  • to_number (строка, формат) — строка в число;
  • to_timestamp (строка, формат) — строка для отметки времени.

Основной формат такой же, как у Oracle.

Функция MySQL

При сохранении даты в MySQL под типом Date() используется формат 2011- 07-11 -месяц-день). В некоторых случаях даже без разделителя 20110711.

Поскольку формат 11.07.2011 (день.месяц.год) считается более привычным в русскоязычных странах, он конвертируется при отображении даты базы данных.

Существует несколько способов преобразования даты.

  1. с использованием php-кода
  2. с использованием команды DATE_FORMAT() при выборе из базы данных дат.

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

Второй способ применим во всех случаях, независимо от сколько записей необходимо извлечь из базы данных с минимальной нагрузкой на сервер, в отличие от метода php-кода.

Рассмотрим пример запуска:

Допустим, есть таблица сообщений, содержащая ячейка send_data с датой в формате 2011-07-11 .

Чтобы извлечь и преобразовать дату, напишите следующий код:

$message = mysql_fetch_array(mysql_query(«SELECT DATE_FORMAT(send_data, ‘%e. %m.%Y’) FROM message»));

Затем, в момент, когда вам нужно отобразить дату конверсии, отобразите поле $message с помощью любой подходящей команды:

например, если send_data содержит 2011 -05-03, получаем 03.05.2011 .

Отмечаем порядковый номер в поле $message, начиная с 0, в команде SELECT нужное значение загружен преобразованными данными. Например, при запросе:

$message = mysql_fetch_array(mysql_query(«SELECT name, text, DATE_FORMAT(send_data, ‘%e.%m.%Y’) FROM message»));

дата будет выводиться с индексом 2:

Вы можете преобразовать дату с помощью DATE_FORMAT() в любую форму и порядок, используя подстановку ключей.

  • date_format (дата, формат) — дата в строку;
  • time_format (время, формат) — строковое время;
  • формат (число, точность) — число в строке вида ‘#,###,###.##’,
    , где количество символов определяется вторым аргументом.

Ниже приведен список основных элементов формата даты и времени:

  • %c — день месяц ;
  • %d — день в месяцы;
  • %H — часы (от 0 до 24);
  • %h — часы (от 1 до 12);
  • %i — минуты;
  • %s — секунды;
  • %T — время в формате «чч:мм:сс»;
  • %Y — год, четыре цифры;
  • % и — год, две цифры.

Источник

Читайте также:  Как открыть меню проверки самсунг
Поделиться с друзьями
Решатор
Adblock
detector