powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / SQLite [игнор отключен] [закрыт для гостей] / order by (datetime)
8 сообщений из 8, страница 1 из 1
order by (datetime)
    #37371023
afghanetz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую. Не могу правильно отсортировать данные.

Код: plaintext
1.
2.
3.
CREATE TABLE [xxx] (
  [Session_ID] AUTOINC( 5 ), 
  [Timer] DATETEXT( 20 ), 
  [MONO] INT( 5 ));

Код: plaintext
select * from xxx order by timer

В поле Timer данные хранятся в формате 15.06.2011 20:29:01
...
Рейтинг: 0 / 0
order by (datetime)
    #37371314
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
afghanetz,

Нормально отсортировать проще всего нормально хранимые даты - например, в формате unixtime.
...
Рейтинг: 0 / 0
order by (datetime)
    #37371360
afghanetz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это понятно, но как решить мою проблему ? Бд уже заполнена и исправить нельзя.
...
Рейтинг: 0 / 0
order by (datetime)
    #37371797
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант примерно так (знаю не все встроенные функции):

Код: plaintext
1.
2.
3.
4.
5.
SELECT * FROM
    (SELECT Session_ID,
     SubStr(Timer,  7 ,  4 )||'-'||SubStr(Timer,  4 ,  2 )||'-'||SubStr(Timer,  1 ,  2 )||' '||SubStr(Timer,  12 ,  8 ) AS Timer,
     MONO FROM xxx) AS XXX2
     
ORDER BY Timer

Или создать представление, и тогда в привычном виде писать:
Код: plaintext
1.
SELECT * FROM XXX2
ORDER BY Timer

Ну и лучше всего создать новую табличку, туда перенести сконвертировано записи и радоваться.
...
Рейтинг: 0 / 0
order by (datetime)
    #37398644
green_troll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afghanetz, никогда не понимал зачем даты в базе хранить в datetime, просто int
...
Рейтинг: 0 / 0
order by (datetime)
    #37414676
maximand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надо преобразовать к другому формату
select strftime('%s','2004-01-01 02:34:56')
...
Рейтинг: 0 / 0
order by (datetime)
    #37414679
maximand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ой я про SubStr и не знал что он в sqlite есть :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT * FROM
    (SELECT Session_ID,
     strftime ( '%s',SubStr(Timer,  7 ,  4 )||'-'||SubStr(Timer,  4 ,  2 )||'-'||SubStr(Timer,  1 ,  2 )||' '||SubStr(Timer,  12 ,  8 )) AS Timer
     FROM 
     
     (select  1  as Session_ID, '15.06.2011 20:29:01' as timer) t
     ) AS XXX2
     
ORDER BY Timer
...
Рейтинг: 0 / 0
order by (datetime)
    #37414729
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afghanetzБд уже заполнена и исправить нельзя .
Вот с этого начинается упадок любого дела, любого проекта. Все можно и нужно править, если в этом необходимость. В данном стлучае видим, что кто-то совершил ошибку, решив, что данные удобнее хранить так. Нужно исправить ее.

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

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


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