2013-08-28 4 views
1

Я пытаюсь получить список разных дней из таблицы. Они хранятся в целых числах.Sqlite group датируется по дате

cal.getTime().getTime() 

Возвращает количество миллисекунд, прошедших с 1 января 1970, 00:00:00 GMT в лице этого объекта Date.

То, что я написал

select strftime('%d-%m-%Y'," + date_clmn + ") from " 
       + TABLE_NAME +" group by strftime('%d-%m-%Y'," + date_clmn + ")" 

Далее, преобразовать эти значения ToString. Что я получаю:

24-11--471 

И после этого, когда я пытаюсь сделать запрос с

strftime('%d-%m-%Y',date_clmn)=24-11--471 

я ничего не получаю.

Что случилось?

Будет ли я работать с часовым поясом, используя этот способ?

Если есть другие способы сделать это, я буду рад вас слышать.

Заранее спасибо.

UPDATE

Tried "date(" + date_clmn+ ",'unixepoch')" 
now retrieved value is "1970-01-01" 
+1

Я думаю, что comparisson wou ld be 'strftime ('% d-% m-% Y', date_clmn) = '24 -11--471''. Просто заключите '24-11--471' в одинарные кавычки, потому что вам нужно сравнить две строки, и, судя по всему, sqlite не обнаруживает несоответствие этого типа, даже запрос выполняется отлично, но, конечно, он не извлекает ни одной строки. Если это сработает, и вы согласны, я могу представить это как ответ. – dic19

+1

Спасибо, он был там тоже[email protected] dic19 – userqwerty1

+0

Ты добрый :) – dic19

ответ

2

Поскольку вы не хранить дату в вашей таблице, вам необходимо изменить поле. Попробуйте с кодом:

"select strftime('%d-%m-%Y'," + date_clmn + "/1000,'unixepoch') from " 
+ TABLE_NAME +" group by strftime('%d-%m-%Y'," + date_clmn + "/1000,'unixepoch')" 
+0

Спасибо, это работает! – userqwerty1

2

Я добавляю это, потому что я думаю, что это может быть полезно кому-то. Согласно documentationstrftime() возвращает дату строки в заданном формате. Так что в этом пункте:

strftime('%d-%m-%Y',date_clmn) = 24-11--471 
    ^       ^
    string       this expression returns an integer 

Там есть несоответствие типов здесь SQLite не обнаруживает. Даже запрос будет работать отлично (я тестировал его и запускал без ошибок), но, конечно, он не будет извлекать какую-либо строку.

Право comparisson будет:

strftime('%d-%m-%Y',date_clmn) = '24-11--471' 

Тестирование: Вот небольшой фрагмент кода, чтобы проверить это поведение:

CREATE TABLE dateTest(myDate VARCHAR); 
INSERT INTO dateTest(myDate) VALUES ('2013-08-29 18:57:00'); 
SELECT strftime('%Y-%m-%d',myDate) AS formatted, myDate FROM dateTest WHERE strftime('%Y-%m-%d') = 2013-08-29; /* this won't retrieve any row */ 
SELECT strftime('%Y-%m-%d',myDate) AS formatted, myDate FROM dateTest WHERE strftime('%Y-%m-%d') = '2013-08-29'; /* this will retrieve '2013-08-29 | '2013-08-29 18:57:00' */ 

И вот результат:

enter image description here

Смежные вопросы