/
Вопросы и ответы
/
SQL
/

Как правильно вводить дату в sql

Как правильно вводить дату в sql

5 лет назад

Человек-Молекула

Ответы

0

В SQL даты обычно вводятся в формате "ГГГГ-ММ-ДД", где "ГГГГ" - год, "ММ" - месяц (от 01 до 12) и "ДД" - день (от 01 до 31).

Например, чтобы вставить запись в таблицу "orders" с датой заказа 22 марта 2023 года, можно использовать следующий запрос:

1
2
INSERT INTO orders (order_date, customer_name)
VALUES ('2023-03-22', 'Иванов Иван');

Если же дата вводится с помощью функции, то можно использовать стандартную функцию преобразования даты, например, функцию TO_DATE() в Oracle:

1
2
INSERT INTO orders (order_date, customer_name)
VALUES (TO_DATE('22-03-2023', 'DD-MM-YYYY'), 'Иванов Иван');

В этом примере мы используем функцию TO_DATE() для преобразования строки "22-03-2023" в дату формата "ГГГГ-ММ-ДД". Второй аргумент функции ("DD-MM-YYYY") указывает формат входной строки.

4 года назад

Алексей Алешин

0

Для ввода даты в SQL используются специальные типы данных, например DATETIME.

Чтобы задать дату, есть несколько способов:

  • Используя формат "YYYY-MM-DD HH:MM:SS" для даты и времени:

    1
    INSERT INTO table_name (date_column) VALUES ('2022-12-31 23:59:59');
  • Используя функции, например, CURDATE() или NOW(), для ввода текущей даты:

    1
    2
    3
      INSERT INTO table_name (date_column) VALUES (CURDATE());
    
      INSERT INTO table_name (datetime_column) VALUES (NOW());
  • Преобразовать строку в дату, например, с помощью STR_TO_DATE():

    1
    INSERT INTO table_name (date_column) VALUES (STR_TO_DATE('31-12-2022', '%d-%m-%Y'));

3 года назад

Ivan Gagarinov

0

Дату в SQL записывают строкой в формате 'ГГГГ-ММ-ДД', а дату со временем — 'ГГГГ-ММ-ДД ЧЧ:ММ:СС'. Этот формат (ISO 8601) понимают PostgreSQL, MySQL, SQL Server и SQLite независимо от настроек языка:

1
2
3
4
INSERT INTO orders (created_on, created_at)
VALUES ('2026-10-15', '2026-10-15 14:30:00');

SELECT * FROM orders WHERE created_on = '2026-10-15';

Формат '15.10.2026' зависит от настроек сервера: в одной базе он сработает, в другой даст ошибку или перепутает день с месяцем.

Типы для дат

ТипЧто хранитПример
DATEтолько дату2026-10-15
TIMEтолько время14:30:00
TIMESTAMP (PostgreSQL), DATETIME (MySQL)дату и время2026-10-15 14:30:00
TIMESTAMPTZ (PostgreSQL)дату и время с часовым поясом2026-10-15 14:30:00+03

Текущая дата

1
2
INSERT INTO orders (created_at) VALUES (CURRENT_TIMESTAMP);
SELECT CURRENT_DATE;

Диапазон дат

1
2
3
SELECT * FROM orders
WHERE created_at >= '2026-10-01'
  AND created_at <  '2026-11-01';

Так в выборку попадёт весь октябрь, включая 31-е число до 23:59:59. Условие BETWEEN '2026-10-01' AND '2026-10-31' для поля со временем потеряет заказы 31 октября после полуночи.

Строку в дату и обратно

1
2
3
4
5
6
7
-- PostgreSQL
SELECT TO_DATE('15.10.2026', 'DD.MM.YYYY');
SELECT TO_CHAR(NOW(), 'DD.MM.YYYY');

-- MySQL
SELECT STR_TO_DATE('15.10.2026', '%d.%m.%Y');
SELECT DATE_FORMAT(NOW(), '%d.%m.%Y');

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

Работу с датами и условиями разбирают в бесплатном курсе «Основы SQL».

7 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845