powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывод дат в промежутке
13 сообщений из 13, страница 1 из 1
Вывод дат в промежутке
    #39700120
Zaifat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть код, выводит события, за указанную дату, но сейчас он работает не корректно, в плане выводит на день позже, может кто помочь корректно написать выборку?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
	SELECT 
		*
	FROM dle_post 
	WHERE 
		approve='1' AND
        
		(eventdate <= '{$year}-{$month}-{$day}' AND 
		eventdate_end >= '{$year}-{$month}-{$day}' AND 
		eventdate_end != '0000-00-00')
        OR 
		(eventdate >= '{$year}-{$month}-{$day}' AND 
		eventdate < '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR AND 
		(eventdate_end = '0000-00-00'))
...
Рейтинг: 0 / 0
Вывод дат в промежутке
    #39700122
Zaifat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написал так:


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
	SELECT 
		*
	FROM dle_post 
	WHERE 
		approve='1' AND
        
		(eventdate < '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR AND 
		eventdate_end > '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR AND 
		eventdate_end != '0000-00-00')
        OR 
		(eventdate >= '{$year}-{$month}-{$day}' AND 
		eventdate < '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR AND 
		(eventdate_end = '0000-00-00'))



но мне кажется это не очень правильно
...
Рейтинг: 0 / 0
Вывод дат в промежутке
    #39700130
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zaifat,

если интересует событие за 09 сентября, то рассматриваем всю длину суток - от "2018-09-09 00:00:00" до "2018-09-09 23:59:59" ?

Событие - точка во времени или интервал с началом и кончалом?
Если интервал, то как долдны соотносится "интервал интересуемых суток" и "интервал действия события"?
событие должно полностью попадать в указанную дату? или иметь с ней хотя бы пересечение?
...
Рейтинг: 0 / 0
Вывод дат в промежутке
    #39700200
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zaifat,

ну или "в картинках":

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
|---------- |\\\\\\\\\\\\\\\\\\\\\\\\\\\\| ---------- сутки "интереса"
|
|----- |\\\\\\\\| ----------------------------------- Событие № 1
|
|----------------- |\\\\\\\\| ----------------------- Событие № 2
|
|-------------------------------- |\\\\\\\\\| ------- Событие № 3
|
|------ |\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\| ---- Событие № 4


Какое из 4-х событий произошло в промежутке "суток интереса" ? Почему?
...
Рейтинг: 0 / 0
Вывод дат в промежутке
    #39700327
Zaifat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна,

есть интервал дат, начало и конец, но возможно, что будет только дата начала и все, то есть дата конца равна нулям
...
Рейтинг: 0 / 0
Вывод дат в промежутке
    #39700328
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zaifat,

по моей картинке - какое из событий попадает в выбранный день?
...
Рейтинг: 0 / 0
Вывод дат в промежутке
    #39700432
Zaifat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна,

все 4, так как они все подпадают под "сутки интереса"
...
Рейтинг: 0 / 0
Вывод дат в промежутке
    #39700487
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zaifatвсе 4, так как они все подпадают под "сутки интереса"
Событие

'2018-01-01 12:00:00' ... '2018-01-02 00:00:00'

попадает в сутки

'2018-01-02 00:00:00' ... '2018-01-02 23:59:59'

?
...
Рейтинг: 0 / 0
Вывод дат в промежутке
    #39700587
Zaifat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
неа
...
Рейтинг: 0 / 0
Вывод дат в промежутке
    #39700622
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zaifat,

в общем случае, два отрезка (B1,E1) и (B2, E2) считаются пересекающимися, если любая из двух конечных точек (Ei) не меньше обоих начальных точек (Bi).
но, так как конечная точка отрезка изначально больше его же начальной точки, на практике достаточно проверить "перекрестное неравенство" между кончалом каждого отрезка и началом другого
в SQL записывается примерно так:
where E2 >= B1 and E1 >= B2


точку перехода суток "выколете" сами, в соответствии с вашей бизнес-логикой...
...
Рейтинг: 0 / 0
Вывод дат в промежутке
    #39700636
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Аннаwhere E2 >= B1 and E1 >= B2Касание ему не нра, так что неравенства строгие...
...
Рейтинг: 0 / 0
Вывод дат в промежутке
    #39700642
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

потому и написано:
Щукина Аннаточку перехода суток "выколете" сами, в соответствии с вашей бизнес-логикой...
...
Рейтинг: 0 / 0
Вывод дат в промежутке
    #39700643
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

тут, думается, от ТС ещё сейчас такая предъява прилетит, что у него задается точка во времени, определяющая "сутки интереса", а не интервал дат. А где у точки начало/кончало - непонятно...
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вывод дат в промежутке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]