【问题标题】:How to save a `DateTime` instance of Dart to sqlite `timestamp` field?如何将 Dart 的 `DateTime` 实例保存到 sqlite `timestamp` 字段?
【发布时间】:2013-07-24 05:24:11
【问题描述】:

我在 Dart 中使用dart-sqlite 操作 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) 

如何解决?

【问题讨论】:

    标签: sqlite datetime timestamp dart


    【解决方案1】:

    SQLite only has direct support for a few datatypes. Quoting from their official documentation:

    NULL。该值为NULL值。

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

    REAL。该值为浮点值,存储为 8 字节 IEEE 浮点数。

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

    BLOB。该值是一个数据块,完全按照输入的方式存储。

    您会注意到没有直接存储日期或时间的方法。但是,您可以插入该值的整数表示形式,或许可以使用DateTime's millisecondsSinceEpoch and fromMillisecondsSinceEpoch methods。如果您更容易使用,您也可以插入一个字符串。

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

    【讨论】:

    • 你是对的。使用millisecondsSinceEpoch 存储数字是个好主意
    猜你喜欢
    • 2018-07-05
    • 2022-10-12
    • 1970-01-01
    • 2020-05-29
    • 2023-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多