如何将 Dart 的“DateTime”实例保存到 sqlite“timestamp”字段?

Fre*_*ind 2 sqlite datetime timestamp dart

我正在使用dart- sqlite 在 Dart 中操作 sqlite。

Sqlite 有一个timestamp字段,Dart 有一个DateTime. 但是当我DateTime向sqlite插入一个实例时,它会抛出一个错误:

Uncaught Error: SqliteException: Invalid parameter type
Stack Trace:
#0      _bind (package:dart-sqlite/sqlite.dart:246:1)
#1      Statement.execute (package:dart-sqlite/sqlite.dart:142:33)
#2      Database.execute (package:dart-sqlite/sqlite.dart:78:31)
#3      Database.execute (package:dart-sqlite/sqlite.dart:79:7) 
Run Code Online (Sandbox Code Playgroud)

如何解决?

rut*_*ter 6

SQLite 只直接支持少数数据类型。引用他们的官方文档:

空值。该值为 NULL 值。

整数。该值是一个有符号整数,根据值的大小存储在 1、2、3、4、6 或 8 个字节中。

真实的。该值是一个浮点值,存储为一个 8 字节的 IEEE 浮点数。

文本。该值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。

斑点。该值是一组数据,完全按照输入的方式存储。

您会注意到没有直接的方法来存储日期或时间。但是,您可以插入值的整数表示形式,也许可以使用DateTimemillisecondsSinceEpoch和fromMillisecondsSinceEpochmethods。您还可以插入一个字符串,如果这对您来说更容易使用。

如果您确实必须插入二进制数据,则可以使用 BLOB,但对于程序中具有语义意义的任何内容,这通常不是一个好主意。