Вверх ↑
Этот топик читают: Гость
Ответов: 16884
Рейтинг: 1239
#556: 2010-08-27 10:09:59 ЛС | профиль | цитата
user_asm писал(а):
снова какую-то хрень выбрало
В БД писал своё время? Если своё - попробуй убрать из запроса 'LocalTime'
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 952
Рейтинг: 4
#557: 2010-08-27 10:27:01 ЛС | профиль | цитата
В БД не писал время, просто элементом датэпикер выбирал дату и она шла в текстовое поле Srdog.

Убрал из обоих частей запроса LocalTime, все равно хрень в результате
Что-то мешает но не могу понять что, на тестовой БД все нормально а на действующей бред.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#558: 2010-08-27 10:33:08 ЛС | профиль | цитата
Выведи в ListBox свою колонку с датой, отсортируй как текст и посмотри глазами в чем там дело.

user_asm писал(а):
просто элементом датэпикер выбирал дату и она шла в текстовое поле Srdog.
Не надо ля-ля - Писал и ручками или может DatePicker вместо точки может поставить буковку "ю"
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:user_asm
Ответов: 952
Рейтинг: 4
#559: 2010-08-27 10:39:54 ЛС | профиль | цитата
Tad,
В 1 месте буква ю вместо точки. Исправил. Буква ю на выборку почему то не влияет, на тестовой базе пробовал. Даже с буквой ю все прошло норм.
Есть пустые поля Srdog.
Больше ничего не заметил.
Ничего не поменялось, в выборке снова хрень.
Было еще 2 косяка, 30.02.2010 (в феврале не 30 дней), и в 9 месяце не 30 дней.
Вот все значения за исключением пустых, так как встречаются и пустые.


28.11.2008
05.12.2008
05.01.2009
05.01.2009
08.01.2009
09.01.2009
13.01.2009
08.03.2009
21.03.2009
21.03.2009
27.03.2009
27.03.2009
19.04.2009
19.04.2009
27.04.2009
03.05.2009
06.05.2009
09.05.2009
18.05.2009
04.06.2009
06.06.2009
06.06.2009
07.06.2009
07.06.2009
07.06.2009
15.06.2009
15.06.2009
16.06.2009
17.06.2009
17.06.2009
20.06.2009
21.06.2009
22.06.2009
07.07.2009
07.07.2009
07.07.2009
08.07.2009
22.07.2009
22.07.2009
22.07.2009
23.07.2009
23.07.2009
28.07.2009
03.08.2009
03.08.2009
03.08.2009
09.08.2009
09.08.2009
21.08.2009
22.08.2009
30.08.2009
03.09.2009
03.09.2009
07.09.2009
09.09.2009
10.09.2009
14.09.2009
18.09.2009
21.09.2009
22.09.2009
24.09.2009
30.09.2009
02.10.2009
06.10.2009
12.10.2009
13.10.2009
17.10.2009
18.10.2009
18.10.2009
22.10.2009
09.11.2009
13.11.2009
13.11.2009
13.11.2009
13.11.2009
14.11.2009
14.11.2009
20.11.2009
20.11.2009
04.12.2009
06.12.2009
06.12.2009
06.12.2009
06.12.2009
06.12.2009
06.12.2009
06.12.2009
06.12.2009
07.12.2009
07.12.2009
09.12.2009
13.12.2009
13.12.2009
14.12.2009
18.12.2009
30.12.2009
30.12.2009
30.12.2009
06.01.2010
07.01.2010
09.01.2010
14.01.2010
14.01.2010
16.01.2010
16.01.2010
16.01.2010
20.01.2010
20.01.2010
27.01.2010
11.02.2010
11.02.2010
11.02.2010
19.02.2010
02.03.2010
03.03.2010
10.03.2010
20.03.2010
24.03.2010
24.03.2010
04.04.2010
04.04.2010
08.04.2010
10.04.2010
10.04.2010
15.04.2010
15.04.2010
15.04.2010
15.04.2010
17.04.2010
17.04.2010
17.04.2010
23.04.2010
23.04.2010
23.04.2010
23.04.2010
30.04.2010
07.05.2010
08.05.2010
08.05.2010
09.05.2010
09.05.2010
14.05.2010
14.05.2010
15.05.2010
15.05.2010
16.05.2010
16.05.2010
16.05.2010
19.05.2010
22.05.2010
22.05.2010
22.05.2010
24.05.2010
26.05.2010
28.05.2010
28.05.2010
28.05.2010
08.06.2010
08.06.2010
09.06.2010
11.06.2010
16.06.2010
16.06.2010
19.06.2010
19.06.2010
21.06.2010
21.06.2010
21.06.2010
21.06.2010
21.06.2010
23.06.2010
23.06.2010
24.06.2010
24.06.2010
24.06.2010
24.06.2010
24.06.2010
27.06.2010
01.07.2010
01.07.2010
01.07.2010
09.07.2010
15.07.2010
15.07.2010
24.07.2010
24.07.2010
24.07.2010
25.07.2010
26.07.2010
28.07.2010
28.07.2010
30.07.2010
01.08.2010
03.08.2010
07.08.2010
07.08.2010
09.08.2010
09.08.2010
14.08.2010
15.08.2010
17.08.2010
18.08.2010
20.08.2010
26.08.2010
30.08.2010
30.08.2010
30.08.2010
07.09.2010
09.09.2010
09.09.2010
10.09.2010
18.09.2010
18.09.2010
22.09.2010
25.09.2010
25.09.2010
26.09.2010
26.09.2010
06.12.2010
08.12.2010
08.12.2010


карма: 0

0
Ответов: 1891
Рейтинг: 110
#560: 2010-08-27 11:47:42 ЛС | профиль | цитата
user_asm, Вам же русским языком было написано, что дату в базу данных нужно писать как YYYY-MM-DD либо в формате unix. Кроме того, сам разработчик написал Вам, что приведенный Вами формат не поддерживается и, следовательно, никто не гарантирует правильность выборок по формату DD.MM.YYYY.

Измените все записи на правильный формат. Вот код
#sql
-- Проводишь к нормальному формату date
UPDATE note SET notes=(SUBSTR (notes, 7, 4) || '-' || SUBSTR (notes, 4, 2) || '-' || SUBSTR (notes, 1, 2));
-- выбираешь так:
SELECT * FROM note WHERE notes <= date('now','localtime') AND notes > date('now','localtime', '-10 days') ORDER BY LastName,Name;

карма: 0
%time%
1
Голосовали:user_asm
Ответов: 952
Рейтинг: 4
#561: 2010-08-27 11:52:56 ЛС | профиль | цитата
Alexbootch,
Сработало.
Если не затруднит дайте ссылку на описание "Проводишь к нормальному формату date"
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#562: 2010-08-27 11:54:56 ЛС | профиль | цитата
user_asm писал(а):
В 1 месте буква ю вместо точки.
Было еще 2 косяка, 30.02.2010 (в феврале не 30 дней).

Поэтому не говори, что
user_asm писал(а):
просто элементом датэпикер выбирал дату и она шла в текстовое поле Srdog.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:user_asm
Ответов: 952
Рейтинг: 4
#563: 2010-08-27 11:58:10 ЛС | профиль | цитата
Tad,
При первоначальном вводе испоьзую пикер, при редактировании вручную Человеческий фактор
Спасибо мужики за помощь. С меня пиво ;)
карма: 0

0
Ответов: 1891
Рейтинг: 110
#564: 2010-08-27 12:01:21 ЛС | профиль | цитата
user_asm, писал(а):
Если не затруднит дайте ссылку на описание "Проводишь к нормальному формату date"


Tad, тебе давал ссылку на Wiki

[flood]
user_asm, писал(а):
С меня пиво ;)
В рейтинг нам с Tad по бутылочке [/flood]
карма: 0
%time%
1
Голосовали:user_asm
Ответов: 952
Рейтинг: 4
#565: 2010-08-27 12:11:19 ЛС | профиль | цитата
Alexbootch,
В последнем запросе я так понял вы заменили date(...) strftime("%Y-%m-%d", ...)

Tad,
Видите ^^^^, читаю вики А вы говорите зря
карма: 0

0
Ответов: 1891
Рейтинг: 110
#566: 2010-08-27 12:18:59 ЛС | профиль | цитата
Ну да. user_asm, вот тебе запрос на вывод данных в твоем любимом формате

#sql
SELECT LastName, Name, Phone, Street, House, App, strftime('%d.%m.%Y', notes) FROM note WHERE notes <= date('now','localtime') AND notes > date('now','localtime', '-10 days') ORDER BY LastName,Name;


карма: 0
%time%
1
Голосовали:user_asm
Ответов: 16884
Рейтинг: 1239
#567: 2010-08-27 16:47:26 ЛС | профиль | цитата
Или так

SELECT LastName, Name, Phone, Street, House, App, strftime('%d.%m.%Y', notes) AS РабДата FROM note WHERE  notes <= date('now')  AND notes > date('now', '-10 days') ORDER BY LastName,Name;
или если всегда выборка идёт только относительно текущей даты, то

SELECT LastName, Name, Phone, Street, House, App, strftime('%d.%m.%Y', notes) AS РабДата FROM note WHERE  notes > date('now', '-10 days') ORDER BY LastName,Name;
------------ Дoбавленo в 13.07:
user_asm писал(а):
При первоначальном вводе испоьзую пикер, при редактировании вручную Человеческий фактор
зря включаешь, а если нужно включить фактор, то вечером покажу как это делается (сейчас на работе), чтобы небыло 30 февраля или 33 марта.
------------ Дoбавленo в 16.47:
user_asm, вот то, что обещал для редактирования
(заодно и становится понятно, почему ввод даты нужно начинать с года и месяца и почему ГГГГ-ММ-ДД, является международным стандартом )


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
файлы: 1primer.rar [4.6KB] [523]
Голосовали:user_asm
Ответов: 1891
Рейтинг: 110
#568: 2010-08-27 17:21:30 ЛС | профиль | цитата
Tad, функции date, time, datetime все же лучше использовать с ('now','localtime'), т.к. при использовании только с ('now') могут быть ошибочные результаты:

SELECT datetime('now') --> 2010-08-27 13:19:31
либо
SELECT datetime('now','localtime') --> 2010-08-27 17:20:38
карма: 0
%time%
0
Ответов: 16884
Рейтинг: 1239
#569: 2010-08-27 23:31:28 ЛС | профиль | цитата
Так как SELECT datetime('now') выдает в UTC, то нужно конечно SELECT datetime('now','localtime')
модификатор "LOCALTIME" считает предшествующую строку времени как Универсальное координированное время (UTC) и пересчитывает время так, что оно отображает LOCALTIME.
Если перед "LOCALTIME" время не UTC, то поведение не определено.
"UTC" является противоположностью "LOCALTIME".
"UTC" предполагает, что предшествующая ему строка это время в местном часовом поясе и пересчитывает в UTC.
Если предшествующая строка не в LOCALTIME, то результат "UTC" является неопределенным.


Что-то с трудом верится, что user_asm пишет в БД датувремя в UTC
И так как user_asm использует только дату и ночью не работает, то date('new') вполне его устроит. При огромной БД еще и (может быть) выиграет по времени выборки.



------------ Дoбавленo в 23.31:
user_asm, для создания списка лет (ComboBox Год), нужно выполнить запрос

SELECT min(strfTime('%Y',notes)), max(strfTime('%Y',notes))+1  FROM   note 
и полученные данные использовать для компонента For.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1891
Рейтинг: 110
#570: 2010-08-28 00:59:02 ЛС | профиль | цитата
Tad, писал(а):
Что-то с трудом верится, что user_asm пишет в БД датувремя в UTC


Tad, SELECT datetime('now','localtime') - это локальная дата и время на компьютере пользователя, а SELECT datetime('now') - это дата и время UTC. Не путай

карма: 0
%time%
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)