在我们的系统(带有MySQL数据库的ASP.NET)中,我们每天记录数十个订单。我们每天还会记录几张(一个或多个订单)的账单。
Orders和Bills表都有一个字段billed_date
(两个表中的字段相同)。
当我们记录帐单的创建时,我们在.NET中创建一个DateTime对象,将时间设置为00:00:00,然后将其作为参数化的UPDATE和INSERT查询发送到MySQL。相同的DateTime对象用于更新Orders表和插入Bills表,并且不会在UPDATE和INSERT之间进行修改。
现在这里有一个奇怪的部分:非常偶尔(在过去几年中有70次),订单表中显示的日期已从中扣除了12个小时。
例如
Orders.billed_date = '2014-03-01 12:00:00'
Bills.billed_date = '2012-03-02 00:00:00'
有问题的billed-date
字段(在两个表中)都是可以为空的DateTime字段,没有设置任何选项(即,PK,NN,UQ,BIN,UN,ZF和人工智能都是未经检查的。)
任何人都可以解释为什么会发生这种情况,为什么它很少发生?