【rust/sqlx/datetime】关于Rust中用sqlx连接mysql的事项
Contents
关于Rust中用sqlx连接mysql的事项
缘起
莫名的喜欢上开发rust,然后开始研究如何替代现有的java写的服务。
经过
- 简单来说按example写了,能和mysql交互。 只是发现插入数据库的时间有点异样。
- 后面仔细看了一下,结论如下
先定义一个,比如东八区的timezone。
let hour = 3600; let tz = FixedOffset::east_opt(8 * hour).unwrap();
- 然后要清楚一件事情,NaiveDate和NaiveDateTime是纯时间不带timezone。
- 在往数据库保存和取出的时候类型是NaiveDate和NaiveDateTime。
- 在业务逻辑流转中用的类型是DateTime<FixedOffset>是带timezone的!!!
- NaiveDateTime转DateTime<FixedOffset>
let r = x.and_local_timezone(tz).unwrap();
- NaiveDate转DateTime<FixedOffset>
let r = x.and_time().and_local_timezone(tz).unwrap();
- DateTime<FixedOffset>转NaiveDateTime
r.naive_local();
- DateTime<FixedOffset>转NaiveDate
r.date_naive();
结语
其实就是这么简单的操作,一开始还有点蒙,不过rust生态现在就是这样很多东西确实没有java丰富,这是事实。