powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Работа с датой
3 сообщений из 3, страница 1 из 1
Работа с датой
    #38794301
Igor-Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Посоветуйте пожалуйста как лучше поступить вот в какой ситуации:
Поле в таблице (varchar 25) - туда, после парсинга сайта, отправляется текущая дата в виде строки (например 02.11.2014 15:31:30).
В последствии, для использования фильтра для выборки по дате, я использовал костыль вида (лишнее поубирал):
Код: sql
1.
2.
SELECT * FROM monitor WHERE cord = '111' AND data_activity > '29.10.2014' AND data_activity < '30.10.2014%';
// получаю за 29 и 30 числа.


И работал мой костыль вроде бы нормально пока не сменился месяц. И теперь выборка при разных месяцах не срабатывает.
Код: sql
1.
2.
SELECT * FROM monitor WHERE cord = '111' AND data_activity > '28.10.2014' AND data_activity < '02.11.2014%';
// не проходит



Я понимал что это строки и ожидал что так сравнивать нельзя и лажа рано или поздно вылезет :)
Как бы лучше поступить чтоб реализовать правильно этот селект ?
- может стоит переделать поле с варчара на datetime ? (но внутри уже много данных, не хотелось бы, и не знаю как правильно..)
Плюс от части "не хотелось бы" потому что хочу что бы дата хранилась внутри именно в таком формате.
- переделать существующий костыль ?
- как-то через STR_TO_DATE. Но что-то не пойму как с ним правильно быть, например:
Код: sql
1.
2.
INSERT INTO test VALUES ('02.11.2014 13:12:16');
SELECT STR_TO_DATE(data_activity, '%d.%m.%y') FROM test; // выводит мне '2020-11-02'. Почему 2020 ?


Заранее спасибо за Ваши советы :)
...
Рейтинг: 0 / 0
Работа с датой
    #38794328
Igor-Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно я поспешил тему создавать. Вроде бы вот так работает селект:
Код: sql
1.
SELECT * FROM monitor WHERE cord = '111' AND (STR_TO_DATE(monitor.data_activity, '%d.%m.%Y') BETWEEN '2014-10-31' AND '2014-11-01');


Вот только как теперь ещё бы правильно дописать ORDER BY, потому что если оставляю как:
Код: sql
1.
ORDER BY STR_TO_DATE(monitor.data_activity, '%d.%m.%Y %H:%I:%S') DESC;


То получаю результат перемешанный, например:
Код: sql
1.
2.
3.
4.
5.
01.11.2014 01:11:41
01.11.2014 23:11:01
01.11.2014 12:10:47
01.11.2014 07:10:39
01.11.2014 10:08:04


А надо чтоб сверху вниз шло время от самого последнего.
...
Рейтинг: 0 / 0
Работа с датой
    #38794409
Фотография Станислав Клевцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor-ZЗдравствуйте...
- может стоит переделать поле с варчара на datetime ? (но внутри уже много данных, не хотелось бы, и не знаю как правильно..)


[/src]
Заранее спасибо за Ваши советы :)

Можно попробовать добавить "новое поле" с типом данных уже datetime.
Написать скрипт обновления для нового поля
Код: plsql
1.
2.
update "table" 
      set "новое_поле" = cast(data_activity as datetime)



Не стоит проектировать таблицы, где в текстовых полях хранится дата \ время !
(есть же специальный для этого тип данных datetime )
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Работа с датой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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