SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 03.06.2015 20:07:00

olejan1991
Участник
Зарегистрирован: 03.06.2015
Сообщений: 3

Выборка за период

имеется таблица с датами типа



id | date_from | date_to
1 | 01.01.1999 | 27.09.1999
2 | 28.09.1999 | 15.10.1999
3 | 16.10.1999 | 13.11.1999
4 | 14.11.1999 | 31.12.1999

1. как выбрать период с 30.09 по 10.11 . В этот период попадают 2 и 3 строки. Как сделать такой запрос?
2. как выбрать период с 16.11 по 10.01 . В этот период попадают 4 и 1 строки. Как сделать такой запрос?

В реальном проекте даты записаны в unix формате

т.е. вот так

id | date_from | date_to
1 | 915148800 | 938390400
2 | 938476800 | 939945600
3 | 940032000 | 942451200
4 | 942537600 | 946598400

Неактивен

 

#2 03.06.2015 22:18:13

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Выборка за период

Смотрите в сторону
https://dev.mysql.com/doc/refman/5.5/en … m-unixtime
она может преобразовать строку в timestamp - ну а дальше уже оперируйте в условии where простыми сравнениями.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 03.06.2015 22:41:35

olejan1991
Участник
Зарегистрирован: 03.06.2015
Сообщений: 3

Re: Выборка за период

deadka написал:

Смотрите в сторону
https://dev.mysql.com/doc/refman/5.5/en … m-unixtime
она может преобразовать строку в timestamp - ну а дальше уже оперируйте в условии where простыми сравнениями.

аха, если б все так было уже бы се было готово, проблема не в переводе обычной даты в юникс

Неактивен

 

#4 03.06.2015 22:42:53

olejan1991
Участник
Зарегистрирован: 03.06.2015
Сообщений: 3

Re: Выборка за период

Эти зпросы не подходят

SELECT * FROM `test` WHERE `date_from` >= 938563200 AND `date_to` <= 942364800

SELECT * FROM `test` WHERE `date_from` >= 938563200 OR `date_to` <= 942364800

Этот работает для этих дат

SELECT * FROM `test` WHERE 938563200<=date_to and date_from <= 942364800


но если забить большее количество дат то не работает

Неактивен

 

#5 04.06.2015 12:27:18

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Выборка за период

olejan1991 написал:

аха, если б все так было уже бы се было готово, проблема не в переводе обычной даты в юникс

вы зря не слушаете советов умных людей smile

olejan1991 написал:

1. как выбрать период с 30.09 по 10.11 . В этот период попадают 2 и 3 строки.

MariaDB [test]> SELECT * FROM test where
FROM_UNIXTIME(date_from)<'1999-09-30' and FROM_UNIXTIME(date_to)>'1999-09-30'
or
FROM_UNIXTIME(date_from)<'1999-11-10' and FROM_UNIXTIME(date_to)>'1999-11-10';
+----+-----------+-----------+
| id | date_from | date_to   |
+----+-----------+-----------+
|  2 | 938476800 | 939945600 |
|  3 | 940032000 | 942451200 |
+----+-----------+-----------+
2 rows in set (0.00 sec)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson