Перейти к содержимому

Как в sql запросе убрать время из даты

  • автор:

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

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

  • Типы данных даты и времени
  • Функции даты и времени
    • Функции, возвращающие значения системной даты и времени
    • Функции, возвращающие компоненты даты и времени
    • Функции, возвращающие значения даты и времени из их компонентов
    • Функции, возвращающие значения разности даты и времени
    • Функции, изменяющие значения даты и времени
    • Функции, устанавливающие или возвращающие функции формата сеанса
    • Функции, проверяющие значения даты и времени

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

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

    Тип данных Формат Диапазон Точность Объем памяти (в байтах) Определяемая пользователем точность в долях секунды Смещение часового пояса
    time чч:мм:сс[.ннннннн] От 00:00:00.0000000 до 23:59:59.9999999 100 наносекунд от 3 до 5 Да Нет
    date ГГГГ-ММ-ДД От 0001-01-01 до 31.12.99 1 день 3 Нет Нет
    smalldatetime ГГГГ-ММ-ДД чч:мм:сс От 01.01.1900 до 06.06.2079 1 минута 4 нет Нет
    datetime ГГГГ-ММ-ДД чч:мм:сс[.ннн] От 01.01.1753 до 31.12.9999 0,00333 секунды 8 Нет Нет
    datetime2 ГГГГ-ММ-ДД чч:мм:сс[.ннннннн] От 0001-01-01 00:00:00.0000000 до 9999-12-31 23:59:59.9999999 100 наносекунд От 6 до 8 Да Нет
    datetimeoffset ГГГГ-ММ-ДД чч:мм:сс[.ннннннн] [+|-]чч:мм От 0001-01-01 00:00:00.0000000 до 9999-12-31 23:59:59.9999999 (время в формате UTC) 100 наносекунд От 8 до 10 Да Да

    Тип данных Transact-SQL rowversion не относится к типам данных даты и времени. Тип данных timestamp является устаревшим синонимом rowversion.

    Функции даты и времени

    В следующих таблицах приводятся функции даты и времени Transact-SQL. Дополнительные сведения о детерминизме см. в статье Детерминированные и недетерминированные функции.

    Функции, возвращающие значения системной даты и времени

    Transact-SQL наследует все значения системной даты и времени от операционной системы компьютера, на котором работает экземпляр SQL Server.

    Высокоточные функции системной даты и времени

    Начиная с SQL Server 2008 (10.0.x) ядро СУБД получает значения даты и времени с помощью API Windows GetSystemTimeAsFileTime(). Точность зависит от физического оборудования и версии Windows, в которой запущен экземпляр SQL Server. Точность возвращаемых значений этого API-интерфейса задана равной 100 нс. Точность может быть определена с помощью метода GetSystemTimeAdjustment() API-интерфейса Windows.

    Функция Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
    SYSDATETIME SYSDATETIME ( ) Возвращает значение типа datetime2(7), которое содержит дату и время компьютера, на котором запущен экземпляр SQL Server. Возвращаемое значение не содержит смещение часового пояса. datetime2(7) Недетерминированная
    SYSDATETIMEOFFSET SYSDATETIMEOFFSET ( ) Возвращает значение типа datetimeoffset(7), которое содержит дату и время компьютера, на котором запущен экземпляр SQL Server. Возвращаемое значение содержит смещение часового пояса. datetimeoffset(7) Недетерминированная
    SYSUTCDATETIME SYSUTCDATETIME ( ) Возвращает значение типа datetime2(7), которое содержит дату и время компьютера, на котором запущен экземпляр SQL Server. Функция возвращает значения даты и времени в формате UTC. datetime2(7) Недетерминированная
    Функции системной даты и времени меньшей точности
    Функция Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
    CURRENT_TIMESTAMP CURRENT_TIMESTAMP Возвращает значение типа datetime, которое содержит дату и время компьютера, на котором запущен экземпляр SQL Server. Возвращаемое значение не содержит смещение часового пояса. datetime Недетерминированная
    GETDATE GETDATE ( ) Возвращает значение типа datetime, которое содержит дату и время компьютера, на котором запущен экземпляр SQL Server. Возвращаемое значение не содержит смещение часового пояса. datetime Недетерминированная
    GETUTCDATE GETUTCDATE ( ) Возвращает значение типа datetime, которое содержит дату и время компьютера, на котором запущен экземпляр SQL Server. Функция возвращает значения даты и времени в формате UTC. datetime Недетерминированная

    Функции, возвращающие компоненты даты и времени

    Функция Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
    DATE_BUCKET DATE_BUCKET ( datepart, number, date, origin ) Возвращает значение даты и времени, соответствующее началу каждого контейнера даты и времени, из временной метки, определенной параметром origin или исходным значением по умолчанию 1900-01-01 00:00:00.000 , если параметр orgin не указан. Тип возвращаемого значения зависит от типа аргумента, переданного в параметре date. Недетерминированная
    DATENAME DATENAME ( datepart, date ) Возвращает строку символов, представляющую указанную часть datepart заданного типа date. nvarchar Недетерминированная
    DATEPART DATEPART ( datepart, date ) Возвращает целое число, представляющее указанную часть datepart заданного типа date. int Недетерминированная
    DATETRUNC DATETRUNC ( datepart, date ) Эта функция возвращает входную дату date, усеченную до указанной части datepart. Тип возвращаемого значения зависит от типа аргумента, переданного в параметре date. Недетерминированная
    DAY DAY ( date ) Возвращает целое число, представляющее часть дня указанного типа date. int Детерминированный
    MONTH MONTH ( date ) Возвращает целое число, представляющее часть месяца указанного типа date. int Детерминированный
    YEAR YEAR ( date ) Возвращает целое число, представляющее часть года указанного типа date. int Детерминированный

    Функции, возвращающие значения даты и времени из их компонентов

    Функция Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
    DATEFROMPARTS DATEFROMPARTS ( year, month, day ) Возвращает значение date, соответствующее указанному числу, месяцу и году. date Детерминированный
    DATETIME2FROMPARTS DATETIME2FROMPARTS ( year, month, day, hour, minute, seconds, fractions, precision) Возвращает значение datetime2, соответствующее указанной дате и времени с заданной точностью. datetime2(precision) Детерминированный
    DATETIMEFROMPARTS DATETIMEFROMPARTS ( year, month, day, hour, minute, seconds, milliseconds) Возвращает значение datetime, соответствующее указанной дате и времени. datetime Детерминированный
    DATETIMEOFFSETFROMPARTS DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision) Возвращает значение datetimeoffset для указанных даты и времени с указанными смещением и точностью. datetimeoffset(precision) Детерминированный
    SMALLDATETIMEFROMPARTS SMALLDATETIMEFROMPARTS ( year, month, day, hour, minute ) Возвращает значение smalldatetime, соответствующее указанной дате и времени. smalldatetime Детерминированный
    TIMEFROMPARTS TIMEFROMPARTS ( hour, minute, seconds, fractions, precision ) Возвращает значение time, соответствующее указанному времени с заданной точностью. time(precision) Детерминированный

    Функции, возвращающие значения разности даты и времени

    Функция Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
    DATEDIFF DATEDIFF ( datepart, startdate, enddate ) Возвращает количество границ даты или времени datepart, пересекающихся между двумя указанными датами. int Детерминированный
    DATEDIFF_BIG DATEDIFF_BIG ( datepart, startdate, enddate ) Возвращает количество границ даты или времени datepart, пересекающихся между двумя указанными датами. bigint Детерминированный

    Функции, изменяющие значения даты и времени

    Функция Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
    DATEADD DATEADD (datepart, number, date ) Возвращает новое значение datetime, добавляя интервал к указанной части datepart заданной даты date. Тип данных аргумента date Детерминированный
    EOMONTH EOMONTH ( start_date [, month_to_add ] ) Возвращает последний день месяца, содержащего указанную дату, с необязательным смещением. Тип возвращаемого значения — это тип аргумента start_date или тип данных date. Детерминированный
    SWITCHOFFSET SWITCHOFFSET (DATETIMEOFFSET, time_zone) Функция SWITCHOFFSET изменяет смещение часового пояса для значения DATETIMEOFFSET и сохраняет значение UTC. Значение datetimeoffset с точностью в долях секунд, заданной в аргументе DATETIMEOFFSET Детерминированный
    TODATETIMEOFFSET TODATETIMEOFFSET (expression, time_zone) TODATETIMEOFFSET преобразует значение типа datetime2 в значение типа datetimeoffset. Функция TODATETIMEOFFSET преобразует значение datetime2 в местное время для указанного time_zone. Значение datetimeoffset с точностью в долях секунд, заданной в аргументе datetime Детерминированный

    Функции, устанавливающие или возвращающие функции формата сеанса

    Функция Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
    @@DATEFIRST @@DATEFIRST Возвращает текущее значение параметра SET DATEFIRST для сеанса. tinyint Недетерминированная
    SET DATEFIRST SET DATEFIRST < number | @number_var > Устанавливает первый день недели в виде числа от 1 до 7. Неприменимо Неприменимо
    SET DATEFORMAT SET DATEFORMAT < format | @format_var > Задает порядок составляющих даты (месяц/день/год) для ввода данных типа datetime или smalldatetime. Неприменимо Неприменимо
    @@LANGUAGE @@LANGUAGE Возвращает название использующегося в настоящий момент языка. @@LANGUAGE не является функцией даты или времени. Однако на данные, выводимые функциями даты, могут повлиять настройки языка. Неприменимо Неприменимо
    SET LANGUAGE SET LANGUAGE < [ N ] ‘language‘ | @language_var > Устанавливает языковую среду сеанса и системных сообщений. SET LANGUAGE не является функцией даты или времени. Однако на данные, выводимые функциями даты, влияет параметр языка. Неприменимо Неприменимо
    sp_helplanguage sp_helplanguage [ [ = ] ‘language‘ ] Возвращает сведения о формате даты всех поддерживаемых языков. sp_helplanguage не является хранимой процедурой даты или времени. Однако на данные, выводимые функциями даты, влияет параметр языка. Неприменимо Неприменимо

    Функции, проверяющие значения даты и времени

    Функция Синтаксис Возвращаемое значение Тип возвращаемых данных Детерминизм
    ISDATE ISDATE ( expression ) Определяет, является ли входное выражение типа datetime или smalldatetime допустимым значением даты или времени. int Функция ISDATE детерминирована, только если используется совместно с функцией CONVERT и если заданный параметр стиля CONVERT не равен 0, 100, 9 или 109.

    Дата и время — см. также

    Статья Описание
    FORMAT Возвращает значение в указанных формате и культуре (не обязательно). Для выполнения форматирования значения даты, времени и чисел с учетом локали в виде строк используется функция FORMAT.
    Функции CAST и CONVERT (Transact-SQL) Предоставляет сведения о преобразовании значений даты и времени в строковые литералы и обратно, а также в другие форматы даты и времени.
    Написание инструкций Transact-SQL, адаптированных к международному использованию Предоставляет рекомендации относительно переносимости баз данных и приложений баз данных, использующих инструкции Transact-SQL, с одного языка на другой или в многоязычную среду.
    Скалярные функции ODBC (Transact-SQL) Предоставляет сведения о скалярных функциях ODBC, которые могут использоваться в инструкциях Transact-SQL. К ним относятся функции даты и времени ODBC.
    AT TIME ZONE (Transact-SQL) Обеспечивает преобразование часовых поясов.

    См. также

    • Функции
    • Типы данных (Transact-SQL)

    Обратная связь

    Были ли сведения на этой странице полезными?

    Выборка даты без времени

    Подскажите запрос на выборку только даты из БД. Имеется строка в таблице формата TIMESTAMP 0000-0-0 00:00:00 , так вот как сделать что бы на экран выводилась только дата а не дата со временем .

    Отслеживать
    задан 17 янв 2013 в 9:47
    1,665 5 5 золотых знаков 35 35 серебряных знаков 73 73 бронзовых знака

    4 ответа 4

    Сортировка: Сброс на вариант по умолчанию

    SELECT DATE_FORMAT( `date_field` , '%d %M %Y' ) AS `date_format` FROM `table_name` 

    Отслеживать
    ответ дан 17 янв 2013 в 10:01
    34k 1 1 золотой знак 31 31 серебряный знак 49 49 бронзовых знаков
    А как сделать чтоб %M — на русском выводило?)
    7 мая 2018 в 12:05
    @junior-web-dev, запрос перед этим сделайте: SET lc_time_names = ‘ru_RU’;
    7 мая 2018 в 12:43

    SELECT DATE( some_field ) FROM some_table

    Больше функций — красивых и разных.

    Отслеживать
    ответ дан 17 янв 2013 в 9:59
    xEdelweiss xEdelweiss
    9,114 17 17 серебряных знаков 31 31 бронзовый знак

    В конце выбранного названия колонки дописать ::date, если я правильно вас понял.

    Отслеживать
    ответ дан 1 мар 2020 в 14:35

    Вот пример, чтоб было более понятно. select shipments.ship_date::date,customer_id,publication, type from shipments, editions, stock ORDER BY publication;

    Как убрать время у даты при получение данных из модели бд?

    Пробывал в запросе прописать ->select(‘DATE_FORMAT(date, «%m-%Y») as data’)
    Выдает ошибку SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘FROM `zakaz` WHERE (action = (CURDATE()-1) AND data < CURDATE()' at line 1

    5adf23083cf40372464096.png

    Мне это нужно для группировки даты. Сейчас у меня все выглядит вот так. Получается объединять только если и время тоже совпадает.

    $Articles = new ActiveDataProvider([ 'query' => \app\models\Zakaz::find() ->where('action andWhere('data >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY)'), 'pagination' => [ 'pageSize' => 20, ], ]);
     $Articles, 'showFooter' => true, 'filterModel'=>$searchModel, /*'showPageSummary'=>true,*/ 'pjax'=>true, 'striped'=>true, 'hover'=>true, 'panel'=>['type'=>'primary', 'heading'=>'За неделю'], 'columns' => [ [ 'attribute'=>'data', 'width'=>'310px', 'value'=>function ($model, $key, $index, $widget) < return $model->data; >, 'filterType'=>GridView::FILTER_SELECT2, 'filter'=>ArrayHelper::map(\app\models\Zakaz::find()->orderBy('data')->asArray()->all(), 'id_zakaz', 'data'), 'filterWidgetOptions'=>[ 'pluginOptions'=>['allowClear'=>true], ], 'filterInputOptions'=>['placeholder'=>'Any supplier'], 'group'=>true, // enable grouping ], [ 'class' => NumberColumn::className(), 'attribute' => 'fact_oplata', ], ], ]);;?>
    • Вопрос задан более трёх лет назад
    • 262 просмотра

    1 комментарий

    Средний 1 комментарий

    Как в результате запроса убрать время даты?

    (8) вам же виднее что за код, вы привели дату к началу дня — времени как бы нет но оно есть колонка с типом дата из запроса идет со временем 0:00:00, обрабатывайте на сервере эту ситуацию, в коде можно делать все что угодно, только был бы смысл — компьютеру все равно как представлена дата, есть договоренность что дата содержит время — это стандарт, лучше работать по стандарту или вы хотите дату привести в строку и работать со строкой.. выбираете нужный тип тогда в запросе можно получать конкатенацию строки Год(дата) + «.» + Месяц(дата) + «.» день(дата) только обратно в дату вы строку не приведете и не сравните если что.. с конкатенацией в запросе не получится нельзя число сложить со строкой а числовые типы к строке не приводятся, но выход есть через внешние модули и например скд, был бы смысл

    11. user5300 981 13.11.19 15:18 Сейчас в теме

    Вот тебе кусочек кода, в запрос его вставь

    ПОДСТРОКА("0123456789", ДЕНЬ(ДатаДОКУМента) / 10 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, 6 * ДЕНЬ(ДатаДОКУМента))) / 6 + 1, 1) + "." + ПОДСТРОКА("0123456789", МЕСЯЦ(ДатаДОКУМента) / 10 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, 6 * МЕСЯЦ(ДатаДОКУМента))) / 6 + 1, 1) + "." + ПОДСТРОКА("0123456789", ГОД(ДатаДОКУМента) / 1000 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(ДатаДОКУМента) * 0.06)) / 6 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(ДатаДОКУМента) * 0.6)) / 6 + 1, 1) + ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, ГОД(Заявка.Дата) * 6)) / 6 + 1, 1) КАК Дата

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

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