Geo*_*rzi 5 sqlite microsoft-metro
我正在开发一个使用 SQLite 作为本地数据库的 Windows 8 Metro 应用程序。
数据库中的一个表包含日期时间列。在运行按日期时间列对结果集进行排序的查询时,我看到了意外的结果 - 结果集的排序方式与您预期的不同。
日期时间列填充了由 C# 中的 Metro 应用程序生成的数据;例如作为DateTimeOffset.Now. WinRT 不支持DateTime,因此我们使用DateTimeOffset.
您可以在一个简单的表中复制它:
CREATE TABLE "Foo" ("DateOfFoo" DATETIME)
Run Code Online (Sandbox Code Playgroud)
以下是一些基于我们应用程序数据的示例数据(请注意,我位于 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
Run Code Online (Sandbox Code Playgroud)
一个简单的查询,例如:
Select * From Foo Order By DateOfFoo
Run Code Online (Sandbox Code Playgroud)
返回以下结果集:
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
Run Code Online (Sandbox Code Playgroud)
当我期望:
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
Run Code Online (Sandbox Code Playgroud)
并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
Run Code Online (Sandbox Code Playgroud)
当我期望:
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
Run Code Online (Sandbox Code Playgroud)
我在 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4352 次 |
| 最近记录: |