zona horario horaria hora cuál colombia argentina sqlite winrt-xaml uwp

horario - Cómo SQLite.Net-PCL maneja la hora UTC



hora utc colombia (2)

La forma más segura de trabajar con las fechas es usar el tipo DateTimeOffset lugar de DateTime .

DateTime no contiene la información sobre la zona horaria en la que se creó, todo lo que sabe es si está en hora UTC o local, lo cual no es suficiente si los datos se van a usar en diferentes ubicaciones.

DateTimeOffset contiene no solo la información de fecha y hora, sino también la zona horaria, lo que significa que el resultado siempre será el esperado.

No hay diferencias en la forma en que se usa, simplemente cambie el tipo:

class Transaction { [SQLite.Net.Attributes.PrimaryKey, SQLite.Net.Attributes.AutoIncrement] public int QId { get; set; } public DateTimeOffset PurchaseDate { get; set; } public int Amount {get;set;} Public string ItemCode {get;set;} }

Para acceso a la base de datos:

var db = new SQLite.Net.SQLiteConnection( new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), DBPath); var newItem = new Transaction() { PurchaseDate = DateTimeOffset.Now, //or use DateTimeOffset.UtcNow for UTC datetime Amount = 100, ItemCode = "Abc-C10" }; db.Insert(newItem);

Estoy usando el siguiente código:

utilizando la nueva SQLite.Net.SQLiteConnection (nueva SQLitePlatformWinRT (), DBPath) para obtener SQLiteConnection y crear una tabla.

La clase contiene DateTime DataType

class Transaction { [SQLite.Net.Attributes.PrimaryKey, SQLite.Net.Attributes.AutoIncrement] public int QId { get; set; } public DateTime PurchaseDate { get; set; } public int Amount {get;set;} Public string ItemCode {get;set;} }

Insertar datos de la siguiente manera:

var db = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), DBPath); var newItem = new Transaction() { PurchaseDate = DateTime.Now, Amount = 100, ItemCode = "Abc-C10" }; db.Insert(newItem);

La fecha se almacenará como Ticks (por ejemplo, 636071680313888433) y esta es la hora UTC.

1) usando DateTime.Now anterior, si la configuración de tiempo de mi computadora es

1a) en British Time,

el código anterior: purchase = DateTime.Now se convertirá correctamente?

1b) en Usa Time,

el código anterior: purchase = DateTime.Now se convertirá correctamente?

¿Cómo manejar este tic en SQL-statement?

¿Cómo seleccionar todas las transacciones desde, por ejemplo, un rango de fechas? decir, 2016-07-10 a 2016-07-20?

Gracias


1a) en tiempo británico, ¿el código anterior será: purchase = DateTime.Now convertido correctamente?

1b) en el tiempo de Estados Unidos, ¿se convertirá correctamente el código anterior: purchase = DateTime.Now?

Con "convertir correctamente" si quiere decir convertir al valor de tiempo correcto, la respuesta es sí. Se convertirá a la hora UTC usando ticks.

¿Cómo manejar este tic en SQL-statement?

¿Cómo seleccionar todas las transacciones desde, por ejemplo, un rango de fechas? decir, 2016-07-10 a 2016-07-20?

La conversión de ticks a otras unidades de tiempo es como a continuación:

  • Garrapatas por día: 864,000,000,000
  • Garrapatas por hora: 36,000,000,000
  • Garrapatas por minuto: 600,000,000
  • Garrapatas por segundo: 10,000,000
  • Garrapatas por milisegundo: 10,000

De modo que puede usar la declaración SQL como se indica a continuación para obtener los datos del 2016-07-10 al 2016-07-20:

SELECT min(PurchaseDate) as ''Date'',sum(Qty) as ''Size'' from Purchase group by (PurchaseDate/(864000000000*10)) //864000000000*10 = 1day*10 order by PurchaseDate

Actualización: si desea seleccionar la Fecha entre 2016-07-10 y 2016-07-20, puede usar la siguiente declaración SQL:

select strftime(''%Y-%m-%d %H:%M:%S'',purchaseDate/10000000 - 62135596800,''unixepoch'') as ''date'' from purchase where date between ''2016-07-10'' and ''2016-07-20''