Форум: "Начинающим";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];
ВнизСортировка по дате Найти похожие ветки
← →
Шакал © (2007-05-14 10:05) [0]Уважаемые мастера, нуна помощь!!
нужно по дате сортировать... пишу "select * from kadry order by Дата"
он сортирует, но только по первому числу (по дате) а месяц и год неучитывает
формат даты в столбе дд.мм.гггг
← →
Knight © (2007-05-14 10:08) [1]Строкой что-ли? Тогда наоборот делай... гггг.мм.дд
← →
Шакал © (2007-05-14 10:20) [2]тогда он будет по году сортировать(((
а я хочу что бы по всем трем числам сортировал..
← →
Knight © (2007-05-14 10:21) [3]> [2] Шакал © (14.05.07 10:20)
Тогда точки убери :)
← →
Knight © (2007-05-14 10:24) [4]Или попробуй вместо стринга, нормальный датовский формат... или формат даты юникс.
← →
Knight © (2007-05-14 10:24) [5]> [0] Шакал © (14.05.07 10:05)
И всё-таки желательно указывать, что за СУБД...
← →
Шакал © (2007-05-14 10:25) [6]и что это за дата будет 14052007
у меня она визуальная...:(
← →
Шакал © (2007-05-14 10:25) [7]бд acces.....
← →
Knight © (2007-05-14 10:35) [8]В принципе, строка сортируется по порядку символов, т.е.
02.04.2007 < 14.05.2007 (0<1)
14.05.2006 < 14.07.2000 (5<7)
т.е. чтобы строка была отсортирована верно, надо, чтобы сперва шёл год, поом месяц, а потом день.
← →
DVM © (2007-05-14 10:47) [9]
> Шакал ©
Дату надо хранить в формате даты, а не строкой, т.к. во-превых, это позволит быстро и по-человечески сортировать по этому критерию, а во-вторых занимает меньше места.
А если как ты говоришь, дата у тебя "визуальная" - то это не как не связано с представлением даты в самой базе. Показывать пользователю дату можно как угодно.
← →
DVM © (2007-05-14 10:48) [10]
> т.е. чтобы строка была отсортирована верно, надо, чтобы
> сперва шёл год, поом месяц, а потом день.
не факт. 01 02 10 11 - отсортирует неверно.
← →
Knight © (2007-05-14 10:52) [11]> [10] DVM © (14.05.07 10:48)
Почему это?
← →
Шакал © (2007-05-14 10:53) [12]Всем спасибо....действитель в базе поля где хранятся даты стоял формат стринг, поменял на даты и все пошло :)
СПАСИБО
← →
DVM © (2007-05-14 10:56) [13]
> Knight © (14.05.07 10:52) [11]
> > [10] DVM © (14.05.07 10:48)
>
> Почему это?
числа 1 2 10 11 стандартная функция сортировки отсортирует так : 1 10 11 2
← →
Knight © (2007-05-14 10:58) [14]> [10] DVM © (14.05.07 10:48)
> не факт. 01 02 10 11 - отсортирует неверно.
> [13] DVM © (14.05.07 10:56)
> числа 1 2 10 11 стандартная функция сортировки отсортирует
> так : 1 10 11 2
Куда пропали вдруг нули из СТРИНГА? :)))
← →
Knight © (2007-05-14 11:04) [15]to DVM
Мухлюете, батенька %)
Стандартная функция сортировки отсортирует так...
01
02
10
11
← →
DVM © (2007-05-14 11:09) [16]
> Мухлюете, батенька %)
Есть немного :)
← →
DVM © (2007-05-14 11:20) [17]
> Knight ©
Вот так сортирует верно любые буквенно-цифровые строки
function MyCompare(ps1, ps2: PChar): integer;
const
Digits = ["0".."9"];
var
DigCnt: integer;
begin
DigCnt := 0;
while (ps1^ = ps2^) and (ps1^ <> #0) do
begin
Inc(ps1);
Inc(ps2);
Inc(DigCnt)
end;
result := integer(ps1^) - byte(ps2^);
if (ps1^ = #0) or (ps2^ = #0) then exit;
if ps1^ in Digits then
begin
if ps2^ in Digits then
begin
DigCnt := 0;
while (ps1^ in Digits) do
begin
inc(DigCnt);
inc(ps1)
end;
while (ps2^ in Digits) do
begin
dec(DigCnt);
inc(ps2)
end;
if DigCnt <> 0 then result := DigCnt
end
else
begin
if DigCnt <> 0 then
if (ps1-1)^ in Digits then result := 1;
end;
end
else
begin
if ps2^ in Digits then
if DigCnt <> 0 then
if (ps1-1)^ in Digits then result := -1;
end;
end;
← →
fd979 © (2007-05-14 12:49) [18]select * from kadry order by CDate(Дата)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.047 c