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

Код: 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
28.07.2011, 16:50
    #37371314
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
order by (datetime)
afghanetz,

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

Код: 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
17.08.2011, 00:24
    #37398644
green_troll
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
order by (datetime)
afghanetz, никогда не понимал зачем даты в базе хранить в datetime, просто int
...
Рейтинг: 0 / 0
27.08.2011, 15:16
    #37414676
maximand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
order by (datetime)
Надо преобразовать к другому формату
select strftime('%s','2004-01-01 02:34:56')
...
Рейтинг: 0 / 0
27.08.2011, 15:22
    #37414679
maximand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
order by (datetime)
Ой я про 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
27.08.2011, 16:20
    #37414729
Edd.Dragon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
order by (datetime)
afghanetzБд уже заполнена и исправить нельзя .
Вот с этого начинается упадок любого дела, любого проекта. Все можно и нужно править, если в этом необходимость. В данном стлучае видим, что кто-то совершил ошибку, решив, что данные удобнее хранить так. Нужно исправить ее.

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

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


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