use microseconds to store validity

main
Ziyang Hu 2 years ago
parent 30070590e0
commit 9ddba9d333

@ -1545,8 +1545,8 @@ pub(crate) fn op_parse_timestamp(args: &[DataValue]) -> Result<DataValue> {
pub(crate) fn str2vld(s: &str) -> Result<Reverse<i64>> {
let dt = DateTime::parse_from_rfc3339(s).map_err(|_| miette!("bad datetime: {}", s))?;
let st: SystemTime = dt.into();
let millis = st.duration_since(UNIX_EPOCH).unwrap().as_secs_f64() * 1000.;
Ok(Reverse(millis as i64))
let microseconds = st.duration_since(UNIX_EPOCH).unwrap().as_secs_f64() * 1_000_000.;
Ok(Reverse(microseconds as i64))
}
define_op!(OP_RAND_UUID_V1, 0, false);

@ -869,12 +869,8 @@ fn expr2vld_spec(expr: Expr, cur_vld: Reverse<i64>) -> Result<Reverse<i64>> {
let vld_span = expr.span();
match expr.eval_to_const()? {
DataValue::Num(n) => {
let f = n.get_float();
let f = f * 1000.;
if !f.is_finite() {
bail!(BadValiditySpecification(vld_span))
}
Ok(Reverse(f as i64))
let microseconds = n.get_int().ok_or_else(|| BadValiditySpecification(vld_span))?;
Ok(Reverse(microseconds))
}
DataValue::Str(s) => {
match &s as &str {

Loading…
Cancel
Save