diff --git a/crates/nu-command/src/dataframe/values/nu_dataframe/conversion.rs b/crates/nu-command/src/dataframe/values/nu_dataframe/conversion.rs index c4d448a1d7..138dafd5bf 100644 --- a/crates/nu-command/src/dataframe/values/nu_dataframe/conversion.rs +++ b/crates/nu-command/src/dataframe/values/nu_dataframe/conversion.rs @@ -498,7 +498,7 @@ pub fn create_column( Ok(Column::new(casted.name().into(), values)) } - DataType::Datetime(_, _) => { + DataType::Datetime(time_unit, _) => { let casted = series.datetime().map_err(|e| { ShellError::GenericError( "Error casting column to datetime".into(), @@ -508,15 +508,19 @@ pub fn create_column( Vec::new(), ) })?; - let values = casted .into_iter() .skip(from_row) .take(size) .map(|v| match v { Some(a) => { - // elapsed time in milliseconds since 1970-01-01 - let seconds = a / 1000; + let unit_divisor = match time_unit { + TimeUnit::Nanoseconds => 1_000_000_000, + TimeUnit::Microseconds => 1_000_000, + TimeUnit::Milliseconds => 1_000, + }; + // elapsed time in nano/micro/milliseconds since 1970-01-01 + let seconds = a / unit_divisor; let naive_datetime = match NaiveDateTime::from_timestamp_opt(seconds, 0) { Some(val) => val, None => {