今天在做sql查询练习,查询单个表中的数据时遇到了查询结果相同的问题
SELECT * FROM hero WHERE grounding_date BETWEEN '2007-01-01' AND '2019-01-01'; sql1
SELECT * FROM hero WHERE grounding_date BETWEEN '20007-01-01' AND '2019-01-01';sql2
1sql1上架日期查询sql是中的20007是我无意间 ,天太冷多打出来的,结果我发现查询结果和2007-01-01到2019-01-01的结果竟然是一样的,看着就很不对劲,我反复试了几次发现还是一样。
于是我去问我的MySQL基础老师,老师要我看一下查询表的数据查询表中的数据
表中并没有2007-01-01之后的数据…
grounding_date字段是date类型
官方文档说明是这样
20007已经超过9999的范围了,在date类型中已经不是一个合法值了,所以把20007作为最低值’1000-01-01’进行作为查询条件。我把表中的数据更改再进行查询验证
更改后的表数据
更改后的查询结果 sql2
更改后的查询结果 sql1
date类型最低范围到2009-01-01区间的查询结果
超出最低范围的查询结果
超出date范围的俩查询结果都一样
between日期区间查询中如果查询的date类型数据超出其date类型数据的范围时,将其转换为date数据有效值范围内的最低值。
版权声明:本文为qq_43314722原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。