|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
MySQL这个名字是怎么来的已经不清楚了。基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQLAB创始人之一的的女儿也叫My。明天在SqlServer中查询一段工夫内的纪录时,sql报出了以下毛病:
两个datetime列的不同招致了运转时溢出。
测试后发明产生该成绩的次要缘故原由是由于两个datetime范例列盘算的了局值超越了却果的数据范例的最年夜值大概最小值,最有大概就是在sql中利用了datediff函数了。
datediff前往的了局是int范例,也就是它的取值局限从–2^31(-2,147,483,648)到2^31–1(2,147,483,647)。假如我们盘算的了局超越这个局限,就会报以上的毛病了。
我们来做个测试,在datediff函数以s为单元来做示例,先盘算一下超值局限,假如我们以秒为单元,那末盘算的工夫值只能在2,147,483,648/60/60/24/365=68年之间,假如超越68年,就会报错了。
测试:
selectdatediff(s,1900-1-1,1968-1-1)
两个日期相差68年,不会报错,实行前往了局2145830400。
selectdatediff(s,1900-1-1,1969-1-1)
两个日期相差69年,实行后前往毛病:两个datetime列的不同招致了运转时溢出。
总结:假如我们在做工夫对照的时分不断定两个工夫差的局限,就不要用datediff函数了,一不当心就报错了。这里我们讨论用binlog来实现闪回的方案。 |
|