Contents

【rust/sqlx/datetime】关于Rust中用sqlx连接mysql的事项

关于Rust中用sqlx连接mysql的事项

缘起

莫名的喜欢上开发rust,然后开始研究如何替代现有的java写的服务。

经过

  1. 简单来说按example写了,能和mysql交互。 只是发现插入数据库的时间有点异样。
  2. 后面仔细看了一下,结论如下 先定义一个,比如东八区的timezone。
     let hour = 3600;
     let tz = FixedOffset::east_opt(8 * hour).unwrap();
    
  3. 然后要清楚一件事情,NaiveDate和NaiveDateTime是纯时间不带timezone
  4. 在往数据库保存和取出的时候类型是NaiveDate和NaiveDateTime。
  5. 在业务逻辑流转中用的类型是DateTime<FixedOffset>是带timezone的!!!
  6. NaiveDateTime转DateTime<FixedOffset>
    let r = x.and_local_timezone(tz).unwrap();
    
  7. NaiveDate转DateTime<FixedOffset>
    let r = x.and_time().and_local_timezone(tz).unwrap();
    
  8. DateTime<FixedOffset>转NaiveDateTime
    r.naive_local();
    
  9. DateTime<FixedOffset>转NaiveDate
    r.date_naive();
    

结语

其实就是这么简单的操作,一开始还有点蒙,不过rust生态现在就是这样很多东西确实没有java丰富,这是事实。