chrono-tz-postgres 0.1.0

Timezone type with PostgreSQL support
Documentation

chrono-tz-postgres

crates.io Released API docs msrv 1.61

A timezone type that can be converted to and from a custom Postgres type.

This is the same as chrono_tz::Tz, but with ToSql and FromSql implemented. The custom Postgres type tz can be found here.

chrono-tz-postgres in action

pub use chrono_tz::Tz;
use chrono_tz_postgres::TzPg;
use postgres::{Client, NoTls};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // We can convert Tz into and from TzPg
    let tz = Tz::Arctic__Longyearbyen;
    let tzpg: TzPg = tz.into();
    let tz: Tz = tzpg.into();

    // Tz can be serialized, unlike TzPg
    serde_json::to_string(&tz).unwrap();

    // but TzPg can interface with Postgres
    let mut client = Client::connect("host=localhost user=postgres", NoTls)?;
    let row = client.query_one("SELECT timezone FROM foo LIMIT 1", &[])?;
    let tz: TzPg = row.get(0);

    // Convert back to Tz to do more
    let tz: Tz = tz.into();
    println!("{tz}");

    Ok(())
}