1 / 1 / 0
Регистрация: 06.02.2017
Сообщений: 22
1

Запрос между датами

09.11.2017, 18:09. Показов 3501. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер!
Кто-нибудь сможет подсказать:
есть таблица в бд, в ней, например, 4 даты - 28.10.2017; 29.10.2017; 03.11.2017; 09.11.2017, храню их в varchar(15), но пробовал и в date - не канает. Делаю запрос на количество различных дат между датами:
SELECT count(DISTINCT ivanov.DATE_OUT) FROM test.ivanov WHERE (DATE_OUT>= '01.01.2016' AND DATE_OUT<= '09.11.2017'); - показывает результат "2"
SELECT count(DISTINCT ivanov.DATE_OUT) FROM test.ivanov WHERE (DATE_OUT>= '31.01.2016' AND DATE_OUT<= '09.11.2017'); - так показывает "0"
Пробовал и через BETWEEN и менять столбец на другое имя и на тип date - бесполезно.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2017, 18:09
Ответы с готовыми решениями:

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

Разница между датами в формате YY:MM:DD
Собственно, как?

Число дней между двумя датами
Искал ,искал я в интернете как же вычислить число дней между двумя полями, так ничего и не нашел....

Выбор между датами в базе данных
Есть таблица с датами показа фильма, в которой есть столбцы COLUMN_STARTDAY и COLUMN_END, в них...

6
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
10.11.2017, 05:58 2
Цитата Сообщение от eni1337 Посмотреть сообщение
Пробовал и через BETWEEN и менять столбец на другое имя и на тип date - бесполезно.
Ну то, что тип поля в таблице должен быть как минимум date (можно datetime или timestamp), для того, что бы с ними хоть как то можно было бы оперировать с помощью ">", "<", "=" или BETWEEN, это точно.
0
Модератор
4215 / 3056 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
10.11.2017, 10:02 3
Цитата Сообщение от eni1337 Посмотреть сообщение
храню их в varchar(15)
Как ты думаешь, с точки зрения строк что больше - 31.01.2016 или 10.01.2017 ?
1
1 / 1 / 0
Регистрация: 06.02.2017
Сообщений: 22
10.11.2017, 10:08  [ТС] 4
С точки зрения строк, я понимаю, что больше 31.01.2016. Я их пытаюсь конвертнуть "на лету" в итоге с запросом разобрался.
Храню в DATE (%d.%m.%Y), при запросе "SELECT count(DISTINCT ivanov.DATE) FROM test.ivanov WHERE (DATE_FORMAT(date,'%Y-%m-%d') BETWEEN '2017-10-01' AND '2017-12-01');" - выходит всё гуд, но в программе на шарпе даты идут строковые в типе %d.%m.%Y, остаётся конвертнуть либо в программе в тип %Y-%m-%d, либо в запросе, но "...BETWEEN (DATE_FORMAT('01.10.2017', '%Y-%m-%d') AND (DATE_FORMAT('01.12.2017', '%Y-%m-%d'))" не катит
0
1177 / 419 / 106
Регистрация: 31.03.2012
Сообщений: 1,145
10.11.2017, 11:33 5
все гораздо проще и в баню ходить не надо, в смысле париться
SQL
1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE dd 
  dt DATE
) engine = myisam DEFAULT CHARACTER SET = cp1251;
INSERT INTO dd VALUES
('20171028'),
('20171029'),
('20171103'),
('20171109');
SELECT * FROM dd;
SELECT COUNT(dt) FROM dd WHERE (dt >= '2016.01.01' AND dt <= '2017.11.09');
SELECT COUNT(dt) FROM dd WHERE (dt >= '2017.11.01' AND dt <= '2017.11.05');
1
1 / 1 / 0
Регистрация: 06.02.2017
Сообщений: 22
10.11.2017, 13:16  [ТС] 6
Проблема решена.
Храню в формате date (%d.%m.%Y), при запросе меняю формат "..WHERE (DATE_FORMAT(date,'%Y-%m-%d') BETWEEN '2017-01-01' AND '2017-12-01')", тк 01.01.2017 и 01.12.2017 не катит, при запросе формат даты должен быть в виде '%Y-%m-%d', в программе на шарпе из maskedTextBox закидываю строку в дату и меняю формат:
DateTime d1 = Convert.ToDateTime(maskedTextBox1.Text);
string date1 = d1.ToString("yyyy-MM-dd");
Выходит всё окей
0
1177 / 419 / 106
Регистрация: 31.03.2012
Сообщений: 1,145
10.11.2017, 16:39 7
Цитата Сообщение от eni1337 Посмотреть сообщение
Храню в формате date (%d.%m.%Y), при запросе меняю формат "..WHERE (DATE_FORMAT(date,'%Y-%m-%d') BETWEEN '2017-01-01' AND '2017-12-01')", тк 01.01.2017 и 01.12.2017 не катит, при запросе формат даты должен быть в виде '%Y-%m-%d', в программе на шарпе из maskedTextBox закидываю строку в дату и меняю формат

Не по теме:

А вот я не буду тупо следовать соглашению (порядку, закону) по которому храниться в БД поля в формате даты, а потому, что клал, кладу вертел, верчу и всегда буду менять неформат выражения. :)

0
10.11.2017, 16:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2017, 16:39
Помогаю со студенческими работами здесь

Как узнать интервал времени между датами
Есть два поля в таблице типа DataTime, необходимо узнать какой интервал времени между этими датами...

Узнать количество рабочих дней между двумя датами
Приведите пример пожалуйста

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

Запрос на выборку между датами
Не работает, запрос private void button2_Click(object sender, EventArgs e) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru