Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Диапазон даты / 18 сообщений из 18, страница 1 из 1
06.11.2014, 13:41:03
    #38797260
Nelzz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон даты
Всем привет,Хочу вытащить таблицу по диапазону даты.



делаю так

Код: sql
1.
2.
3.
SELECT * FROM contacts
  WHERE created_at BETWEEN STR_TO_DATE('2014-10-01', '%Y-%m-%d') 
  AND STR_TO_DATE('2014-10-03', '%Y-%m-%d');



получаю дату 2014-10-01 и 2014-10-02, куда пропал послед 2014-10-03? как его получить?

Правильно ли я вытаскиваю диапазон в таком виде?
...
Рейтинг: 0 / 0
06.11.2014, 13:48:37
    #38797281
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон даты
Nelzzкуда пропал послед 2014-10-03?куда,куда... стр_ту_дэйт даёт нам что? а сравниваете вы с чем?
...
Рейтинг: 0 / 0
06.11.2014, 13:53:11
    #38797283
Nelzz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон даты
tanglirNelzzкуда пропал послед 2014-10-03?куда,куда... стр_ту_дэйт даёт нам что? а сравниваете вы с чем?

видно он для конвертации там) взял поставил работал и не парилься), как тогда правильно сделать?
...
Рейтинг: 0 / 0
06.11.2014, 13:56:03
    #38797286
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон даты
Nelzz,

вы ответьте на мои вопросы, и понимание должно прийти :)
...
Рейтинг: 0 / 0
06.11.2014, 14:10:38
    #38797306
Nelzz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон даты
tanglirNelzz,

вы ответьте на мои вопросы, и понимание должно прийти :)

не понимаю как сравнивать...
...
Рейтинг: 0 / 0
06.11.2014, 15:36:35
    #38797402
Nelzz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон даты
как теперь решить?
...
Рейтинг: 0 / 0
07.11.2014, 04:51:45
    #38798056
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон даты
Nelzz,

даю наводку: вы сравниваете разные типы данных.
...
Рейтинг: 0 / 0
07.11.2014, 07:05:24
    #38798097
LiveMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон даты
Nelzz,

для того чтобы пришло понимание, что все таки происходит выполните простенький селект

select created_at, STR_TO_DATE('2014-10-01', '%Y-%m-%d') from contacts limit 1

Вы визуально сравните чем 2 столбца будут отличаться. А отличаться они не должны.
...
Рейтинг: 0 / 0
07.11.2014, 08:36:59
    #38798130
Nelzz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон даты
LiveManNelzz,

для того чтобы пришло понимание, что все таки происходит выполните простенький селект

select created_at, STR_TO_DATE('2014-10-01', '%Y-%m-%d') from contacts limit 1

Вы визуально сравните чем 2 столбца будут отличаться. А отличаться они не должны.

сравнил вернул 2014-10-01 без времени. Так и должно быть.

Делаю так,вроде все работает как надо.

SELECT * FROM `contacts` WHERE DATE(`created_at`) BETWEEN '2013-01-08' AND '2014-12-10'

правильно ли делаю?
...
Рейтинг: 0 / 0
07.11.2014, 09:58:01
    #38798189
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон даты
Nelzzвернул 2014-10-01 без времени. Так и должно быть.а почему тогда удивляетесь
Nelzzкуда пропал послед 2014-10-03?
...
Рейтинг: 0 / 0
07.11.2014, 12:15:04
    #38798338
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон даты
tanglirразные типы данных.Почему? Не вижу этого в исходных данных.

Имхо, все намного проще:
Код: sql
1.
2.
SELECT * FROM contacts
  WHERE created_at >= '2014-10-01 00:00:00' AND created_at < '2014-10-04 00:00:00'

Тогда в результате будут и 1, и 2, и 3 числа.

Но все-таки желательно уточнить, какого типа поле created_at.
...
Рейтинг: 0 / 0
07.11.2014, 12:21:49
    #38798354
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон даты
miksofttanglirразные типы данных.Почему? Не вижу этого в исходных данных.

Имхо, все намного проще:
Код: sql
1.
2.
SELECT * FROM contacts
  WHERE created_at >= '2014-10-01 00:00:00' AND created_at < '2014-10-04 00:00:00'

Тогда в результате будут и 1, и 2, и 3 числа.

Но все-таки желательно уточнить, какого типа поле created_at.

а я вижу - дата и датавремя
...
Рейтинг: 0 / 0
07.11.2014, 12:31:32
    #38798369
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон даты
miksoft
Код: sql
1.
AND created_at < '2014-10-04 00:00:00'

Вооот, а у ТСа - битвин с предыдущей датой. А битвин потому, что при работе с датами он таких эффектов не даёт, вот ТС им и пользовался и даже не задумывался об этом... пока на "глюк" не напоролся :)
...
Рейтинг: 0 / 0
07.11.2014, 12:32:25
    #38798372
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон даты
alex564657498765453а я вижу - дата и датавремяВсе равно криминала в этом не вижу
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-type-conversion.html Conversion of DATE values:

Conversion to a DATETIME or TIMESTAMP value adds a time part of '00:00:00' because the DATE value contains no time information.Т.е. будет подставлено время '00:00:00'.
А 3 число пропадало совершенно логично, т.к. не выполнялось второе условие '2014-10-03 13:27:26' <= '2014-10-03 00:00:00' в операторе BETWEEN.
...
Рейтинг: 0 / 0
07.11.2014, 12:34:32
    #38798375
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон даты
miksoft, так не выполнялось-то оно как раз потому, что ТС писал условие, считая, что сравнивает date, а на самом деле сравнивался datetime.
...
Рейтинг: 0 / 0
07.11.2014, 12:39:02
    #38798385
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон даты
tanglirа на самом деле сравнивался datetimeДа я вроде бы так и написал.
Я только не понял, что ТС этого не понял :)
...
Рейтинг: 0 / 0
07.11.2014, 14:00:35
    #38798518
Nelzz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон даты
Дата должен быть виде 2014-10-07 так как запрос идет в таком виде к базе, тип timestamp, мне фреймворк генерит все это.

в инпуте он таком виде 2014-10-01 - 2014-10-03 я их разделаю аккуратно и делаю такой запрос:

SELECT * FROM `contacts` WHERE DATE(`created_at`) BETWEEN '2014-10-01' AND '2014-10-03'

этот запрос работает как надо. Правильно ли так? с типом timestamp
...
Рейтинг: 0 / 0
07.11.2014, 14:12:26
    #38798538
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон даты
Nelzzтип timestampПричем тут timestamp?
'2014-10-01' - это тип date.
'2014-10-03 13:27:26' - это datetime.
NelzzSELECT * FROM `contacts` WHERE DATE(`created_at`) BETWEEN '2014-10-01' AND '2014-10-03'Можно и так, то это не позволит использовать индекс по полю `created_at`, быстродействие запроса будет невысоким.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Диапазон даты / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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