Название: Как правильно вставить дату в таблицу? Отправлено: Alex_C от Апрель 27, 2012, 22:01 Есть дата формата QDate. Как ее правильно (читай не зависимо от региональных стандартов) вставить в поле DateTime используя bindValue? В Дельфи для таких целей можно было указать тип данных, дабы избежать "неоднозначности".
Название: Re: Как правильно вставить дату в таблицу? Отправлено: alexis031182 от Апрель 27, 2012, 22:20 QLocale::dateFormat
Нет? Название: Re: Как правильно вставить дату в таблицу? Отправлено: Alex_C от Апрель 28, 2012, 08:06 QLocale::dateFormat Нет? Нет. Если допустим в качестве базы под виндой использовать MS Access, то можно получить весьма непредсказуемый результат. Необходимо обязательно указывать тип данных. Название: Re: Как правильно вставить дату в таблицу? Отправлено: Alex_C от Апрель 28, 2012, 09:09 Не знаю на сколько правильно, но с SQLite работает так:
Код:
Название: Re: Как правильно вставить дату в таблицу? Отправлено: Kurles от Апрель 28, 2012, 09:13 Я не мудрствуя лукаво храню тупо в integer: uint QDateTime::toTime_t () const :)
Если для QDate: int QDate::toJulianDay () const Название: Re: Как правильно вставить дату в таблицу? Отправлено: Alex_C от Апрель 28, 2012, 16:01 Честно говоря не понял. Формат DateTime - это double (имеется ввиду в системе.) И при попытке вставить int допустим в тот же Эксесс получаем ошибку.
Название: Re: Как правильно вставить дату в таблицу? Отправлено: Bepec от Апрель 28, 2012, 17:09 В системе дататайм это большооооое количество секунд с 1901 года, насколько я помню ;) Так что спокойно вписывается в long/int.
Название: Re: Как правильно вставить дату в таблицу? Отправлено: Alex_C от Апрель 28, 2012, 20:41 А ты попробуй?
Для остальных - весьма принципиальная вещь. В общем -все решил. Не хочу тут ехидных замечаний. Кому интересно - пишите на емайл. Название: Re: Как правильно вставить дату в таблицу? Отправлено: Странник от Апрель 29, 2012, 00:42 тешил себя надеждой, что ISO 8601 все хавает. заблуждался?
Название: Re: Как правильно вставить дату в таблицу? Отправлено: Alex_C от Май 01, 2012, 10:01 В системе дататайм это большооооое количество секунд с 1901 года, насколько я помню ;) Так что спокойно вписывается в long/int. В системе дататайм - это дробное число, где целая часть - число дней с 31 декабря 1899 года. Дробная часть - это часы, минуты, секунды. Одна секунда равна 1/(24часа*60минут*60секунд) . Поясню еще раз проблему с которой я столкнулся конкретно применительно к Эксесу - поле в Эксесе указано как дата-тайм. Но если туда просто вставить дробное число, соответствующее нужной дате, то по каким то одним разработчикам Эксеса известным принципам оно преобразуется в какую то странную дату-время. Чтоб такого не произошло, нужно явно указывать , что это формат даты-времени. Вот собственно такая вот проблема. Название: Re: Как правильно вставить дату в таблицу? Отправлено: RVZ от Май 03, 2012, 15:52 Вставляй как строковые выражения! (И ВООБЩЕ ЧТО БЫ С БАЗАМИ АКСЕСА РАБОТАТЬ VBA есть... так сказать пидалям пидальное)
Название: Re: Как правильно вставить дату в таблицу? Отправлено: Alex_C от Май 03, 2012, 17:37 Вставляй как строковые выражения! Вот здесь хотелось бы пояснения. Во всех учебниках по программированию строго-на строго написано - при вставке данных типа времени не использовать текстовые значения, т.к. это может привести к ошибке - региональные стандарты даты в системе и в программе могут не совпадать. Собственно по этому вопрос и возник - вроде как тестовые данные даты-времени вставлять всегда считал не правильно. Название: Re: Как правильно вставить дату в таблицу? Отправлено: RVZ от Май 04, 2012, 10:38 Вот именно... по этому и не используются АКСЕСЫ для нормальных проектов (... это Г.калькулятор) в реальных движках вопрос решается преобразованием типов CONVERT(...) (КАК ВООБЩЕ БЕЗ ХРАНИМЫХ ПРОЦЕДУР РАБОТАТЬ!!!! ??? )
.... в общем не знаю чем помочь :'( |