Какой тип данных Rust использовать для timestamptz
при использовании postgres версии 0.17.0 с Rust 1.40.0?
Я прочитал документы для Timestamp
но не знаю, что это значит или как его реализовать.
В readme для 0.17.0-alpha.1 есть таблица, в которой говорится, что timezone
соответствует типам Rust time::Timespec
или chrono::DateTime<Utc>
, но ни один из них не работает для меня.
Когда я пытаюсь использовать указанные функции в моем автомобиле go .toml, используя:
[dependencies]
postgres = {version="0.17.0-alpha.1", features=["with-chrono", "with-time"]}
, я получаю эту ошибку:
the package `mypackage` depends on `postgres`, with features: `with-time, with-chrono` but `postgres` does not have these features.
Вот некоторый функциональный код и соответствующие зависимости. Я хочу иметь возможность читать и печатать часовой пояс для каждой строки (закомментировано)
main.rs
use postgres::{Client, Error, NoTls};
extern crate chrono;
use chrono::{DateTime, Local, NaiveDateTime, TimeZone, Utc};
extern crate time;
use time::Timespec;
pub fn main() -> Result<(), Error> {
let mut client = Client::connect("host=localhost user=postgres", NoTls)?;
client.simple_query(
"
CREATE TABLE mytable (
name text NOT NULL,
timestamp timestamptz NOT NULL)",
)?;
client.execute("INSERT INTO mytable VALUES ('bob', now());", &[])?;
for row in client.query("SELECT * FROM mytable", &[])? {
let name: &str = row.get(0);
// let timestamp: chrono::DateTime<Utc> = row.get(1); //doesnt work
// let timestamp: Timespec = row.get(1); //doesnt work
println!("name: {}", name);
// println!("timestamp: {}", timestamp);
}
Ok(())
}
Uncommenting
let timestamp: Timespec = row.get(1); //doesnt work
error[E0277]: the trait bound `time::Timespec: postgres_types::FromSql<'_>` is not satisfied
--> src/main.rs:30:39 | 30 |
let timestamp: Timespec = row.get(1); //doesnt work
^^^ the trait `postgres_types::FromSql<'_>` is not implemented for `time::Timespec`
Uncommenting
let timestamp: chrono::DateTime<Utc> = row.get(1); //doesnt work
error[E0277]: the trait bound `chrono::DateTime<chrono::Utc>: postgres_types::FromSql<'_>` is not satisfied
--> src/main.rs:29:52 29 |
let timestamp: chrono::DateTime<Utc> = row.get(1); //doesnt work
^^^ the trait `postgres_types::FromSql<'_>` is not implemented for `chrono::DateTime<chrono::Utc>`
Car go .toml
[dependencies]
postgres = "0.17.0"
chrono = "0.4.10"
time = "0.1.14"
Эта ссылка говорит об использовании time = "0.1.14"
. последняя версия также не работает https://crates.io/crates/postgres/0.17.0-alpha.1