2009-10-08 1 views
0

Я использую функцию локальной базы данных в AIR 1.5. У меня есть таблица, которая создается с помощью:Проблема даты SQL и даты Flash

"CREATE TABLE IF NOT EXISTS employees (timeAdded Date, name STRING)" 

Теперь давайте говорить, что я хочу, добавил каждый сотрудник между date1:Date и date2:Date, я бы это сделать с помощью:

"SELECT * FROM employees WHERE " + date1 + "<timeAdded AND timeAdded<" + date2 

Это не работает, потому что тип Date в SQL - это Julian day number (JDN), а date1 и date2 - даты, отформатированные в формате Flash. Невозможно получить JDN даты со вспышкой. Как решить проблему?

Редактировать: Я не нашел решение этой проблемы, но вместо этого использовал функцию Date.time.

ответ

1

Вы уверены, что это не результат отсутствия котировок вокруг дат?

Try: "SELECT * FROM employees WHERE '" + date1 + "'<timeAdded AND timeAdded<'" + date2+"'"

В противном случае, не существует никакого метода вспышки "ToString" или что-то для даты?

Я нашел «отформатированный для строки», который вы хотите. Вы ищете класс DateFormatter, который, по-видимому, (к сожалению) отдельно: http://www.yapiodesign.com/blog/2005/11/10/dateformatter-static-class-update-of-darron-schalls-dateformatas/

ТАКЖЕ: вы изучали классы «DateUtil»?

Наконец: Кто-то, кто имел такую ​​же проблему, и решить ее: http://blog.wheelerstreet.com/a-quick-actionscript-3-workaround-for-ms-sql

+0

Я попытался добавить '', но не повезло. Метод 'ToString' не возвращает номер юлианского дня, он возвращает строку в формате« Thu Oct 8 15:06:07 2009 UTC » – sigvardsen

+0

Проверьте последние несколько вещей, в последней ссылке есть кто-то, у кого была аналогичная проблема , классы DateFormatter и DateUtil описаны в последней ссылке и содержат функции, которые помогут. – Erich

+0

Я думаю, что вы ошиблись, когда вы вызываете toString() во флеше, он возвращает формат «Чт 8 окт 15:06:07 2009 UTC». Мне нужен номер юлианского дня. – sigvardsen

1

Для тех, кто ищет ответ в будущем:

sqlStatement.text = "SELECT * FROM employees WHERE :date1 < timeAdded AND timeAdded < :date2" 
sqlStatement.parameters[":date1"] = date1; 
sqlStatement.parameters[":date2"] = date2; 

Это должно работать.

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