Работя върху приложение за Windows 8 Metro, което използва SQLite като своя локална база данни.
Една от таблиците в базата данни съдържа колона за дата и час. Виждам неочаквани резултати, когато изпълнявам заявки, които сортират набора от резултати по колоната за дата и час - наборът от резултати не е подреден както бихте очаквали.
Колоната за дата и час се попълва с данни, генерирани от приложението Metro в C#; например като DateTimeOffset.Now
. WinRT не поддържа DateTime
, така че използваме DateTimeOffset
.
Можете да копирате това в проста таблица:
CREATE TABLE "Foo" ("DateOfFoo" DATETIME)
Ето някои примерни данни, базирани на данни от нашето приложение (имайте предвид, че съм в часовата зона PDT, която е UTC -7):
INSERT INTO "main"."Foo" ("DateOfFoo") VALUES (?1)
Parameters:
param 1 (text): 9/18/2012 8:08:56 AM -07:00
INSERT INTO "main"."Foo" ("DateOfFoo") VALUES (?1)
Parameters:
param 1 (text): 9/18/2012 8:13:42 AM -07:00
INSERT INTO "main"."Foo" ("DateOfFoo") VALUES (?1)
Parameters:
param 1 (text): 9/18/2012 12:46:36 PM -07:00
Проста заявка като:
Select * From Foo Order By DateOfFoo
връща следния набор от резултати:
9/18/2012 12:46:36 PM -07:00
9/18/2012 8:08:56 AM -07:00
9/18/2012 8:13:42 AM -07:00
когато очаквам:
9/18/2012 8:08:56 AM -07:00
9/18/2012 8:13:42 AM -07:00
9/18/2012 12:46:36 PM -07:00
и Select * From Foo Order By DateOfFoo DESC
връща:
9/18/2012 8:13:42 AM -07:00
9/18/2012 8:08:56 AM -07:00
9/18/2012 12:46:36 PM -07:00
когато очаквам:
9/18/2012 12:46:36 PM -07:00
9/18/2012 8:13:42 AM -07:00
9/18/2012 8:08:56 AM -07:00
Моят колега в часовата зона CDT не можа да възпроизведе проблема. Промених часовата зона на моята машина на CDT и попълних данните за приложението и със сигурност заявката сортира правилно набора от резултати:
9/18/2012 2:46:36 PM -05:00
9/18/2012 10:13:42 AM -05:00
9/18/2012 10:08:56 AM -05:00