gpt4 book ai didi

postgresql - 在Rust中将时间戳吸收到postgres时,如何避免字符串转换?

转载 作者:行者123 更新时间:2023-12-03 11:30:26 24 4
gpt4 key购买 nike

我正在使用rust-postgres条板箱来提取数据。这是一个成功添加行的工作示例:

    let name: &str = "hello from rust";
let val: i32 = 123;
let now: DateTime<Utc> = Utc::now();
let timestamp = now.format("%Y-%m-%dT%H:%M:%S%.6f").to_string();
client.execute(
"INSERT INTO trades VALUES(to_timestamp($1, 'yyyy-MM-ddTHH:mm:ss.SSSUUU'),$2,$3)",
&[&timestamp, &name, &val],
)?;
这看起来不太好,因为我必须进行向前和向后的字符串转换,我希望能够编写如下内容
    let name: &str = "hello from rust";
let val: i32 = 123;
let now: DateTime<Utc> = Utc::now();
client.execute(
"INSERT INTO trades VALUES($1,$2,$3)",
&[&now, &name, &val],
)?;
以这种方式摄取时间戳的最有效方式是什么?
编辑:
这是上面第二个示例返回的错误
Error: Error { kind: ToSql(0), cause: Some(WrongType { postgres: Timestamp, rust: "chrono::datetime::DateTime<chrono::offset::utc::Utc>" }) }
我的 cargo.toml看起来像这样(已为rust postgres条板箱启用了chrono功能):
[dependencies]
chrono = "0.4.19"
postgres={version="0.19.0", features=["with-serde_json-1", "with-bit-vec-0_6", "with-chrono-0_4"]}

最佳答案

我认为问题出在您的postgres模式和Rust类型之间不匹配:错误似乎是说您的postgres类型是timestamp,而您的rust类型是DateTime<Utc>
如果您检查the conversion tableDateTime<Utc>将转换为TIMESTAMP WITH TIME ZONE。只能转换为TIMESTAMP的类型是NaiveDateTimePrimitiveDateTime

关于postgresql - 在Rust中将时间戳吸收到postgres时,如何避免字符串转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65826057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com