mysql 时间精度问题
timestamp到2038年,还���14年时间,一个系统如果能活到那一刻也是相当不错了。
这里先看一下个datetime的问题,下面的插入数据的时间戳是2024-03-06 21:20:50.839
INSERT INTO psi_io_balance ( id, as_id, bill_date, order_id, busi_type, direction, customer_id, ca_name, warehouse_id, stock_id, out_count, out_unit_cost, out_cost, final_count, final_unit_cost, final_cost, create_time, sn ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) ==> Parameters: f0ad530bcd234a57bf11282e7900c0fe(String), 7(Integer), 2024-01-09 00:00:00.0(Timestamp), XSCKD202401090001(String), 03(String), 02(String), 557511(Integer), 工作室(String), 43ebf6d3ed024d738b3c788aea27ec1f(String), 538(Integer), 1(BigDecimal), 0.01000000(BigDecimal), 0.01(BigDecimal), 9.00000000(BigDecimal), 0.01000000(BigDecimal), 0.09(BigDecimal), 2024-03-06 21:20:50.839(Timestamp), 0(Integer)
因为系统设计,你可以任意选择时间插入,插入后将实时进行成本核算,于是就发生了向后面的数据作用。下面的create_time 应该大于2024-03-06 21:20:50.839,但因为数据库字段为datetime,因此自身也被查询数来了,可以看到2024-03-06 21:20:51 这个字段到秒,后面的毫秒被丢失
SELECT id,as_id,bill_date,order_id,busi_type,direction,vendor_id,customer_id,ca_name,warehouse_id,stock_id,in_count,in_unit_cost,in_cost,out_count,out_unit_cost,out_cost,final_count,final_unit_cost,final_cost,residue_count,end_flag,update_time,create_time,version,sn FROM psi_io_balance WHERE (bill_date = ? AND create_time > ? AND as_id = ? AND stock_id = ? AND warehouse_id = ?) ==> Parameters: 2024-01-09 00:00:00.0(Timestamp), 2024-03-06 21:20:50.839(Timestamp), 7(Integer), 538(Integer), 43ebf6d3ed024d738b3c788aea27ec1f(String)
The End