最近碰到了这个问题,被啪啪啪的打脸,写下来记录自己的黑历史。流水账,着急的直接穿越到文末看结论。
问题:查询某表在一月份到三月份的数据。
举例:student(id varchar(20),name varchar(20), cretae_time),求1-1到3-31号报道的学生总数。
过程:
自己刚开始写的sql语句如下:select count(*) from student where create_time between to_date('2019/01/01','yyyy/mm/dd') and to_date('2019/03/31','yyyy/mm/dd');
自认为没有什么问题,提交数据,被问到:Oracle比较日期类型直接用between...and不行吗?举个例子:select count(*) from student s where s.create_time between '2019/01/01' and '2019/03/31';如果修改为:select count(*) from student s where to_char('s.create_time','yyyy/mm/dd') between '2019/01/01' and '2019/03/31';可以吗?
为了XX,自己特意去试了试,还特意测试了一下mysql,回复到:对的,需要使用tochar,或者to_date函数,不然会出现“文字与格式字符不匹配”错误,查不出结果。mysql则可以直接比较,不需要用到函数转换。
接着,莫名其妙