Creating a Datetime Column in Polars DataFrame from i64 Vector in Rust

I'm working with the Polars library in Rust and am struggling to find documentation related to its dtype-datetime feature, especially when compared to its Python counterpart which seems a lot richer with examples.

My goal is to create a dataframe with a column of datetime type. For the purposes of this post, I'll focus only on this column, but please note that my actual dataframe will have multiple columns. I want to use the df! macro with existing Vectors, as shown:

    "datetime_col" => datetime_vec

The datetime_vec would be populated with timestamps, and I've been trying to use the chrono crate (I'm open to suggestions):

let datetime_vec: Vec<i64> = vec![];

However, I'm unsure how to utilize this vector with the df! macro such that the column will be recognized as a datetime type. Ideally, it would be done in a way that minimizes allocations and yields best performance.

Has anyone faced this issue? What's the recommended approach? While I did look at Polars' datetime unit tests for clues (linked here), it seems they focus on converting from string to datetime. I need a way to go from i64 to datetime.


  • Because polars date times are really just ints under the hood, the function you are looking for is cast.

    use polars::prelude::*;
    fn main() {
        let v = vec![chrono::Utc::now().timestamp_millis()];
        let mut df = df!["dt" => v].unwrap();
    shape: (1, 1)
    │ dt                      │
    │ ---                     │
    │ datetime[ms]            │
    │ 2023-08-24 18:27:21.009 │