RBQL Rainbow CSV日期SELECT语句执行异常:筛选结果错误求助
解决日期筛选错误的问题
先说说你之前尝试的几个语句为什么会出错:
- 直接用字符串
"3/02/2021"或'3/02/2021'比较:数据库会按字符串字典序判断大小,不是日期逻辑。比如存储的"12/01/2020",字典序里"3..."比"1..."大,会被错误筛选出来,完全不符合日期的实际大小关系。 parseInt(a5) > 3/02/2021:这个错误更明显——parseInt(a5)会把日期字符串"3/02/2021"转成数字3,而3/02/2021是除法运算(3÷2÷2021≈0.00074),等于判断3>0.00074,所有记录都会被选中,肯定不对。
正确的解决思路
首先要明确你的a5字段是日期类型还是字符串类型,对应不同的写法:
如果a5是日期类型
直接用ISO标准日期格式(YYYY-MM-DD)写条件,几乎所有数据库都支持:
SELECT * WHERE a5 > '2021-03-02';
如果a5是字符串类型
必须把字符串转成日期类型再比较,不同数据库的转换函数不一样,举几个常用的:
- MySQL/MariaDB:用
STR_TO_DATE指定日期格式(你用的是月/日/年,对应%m/%d/%Y)
SELECT * WHERE STR_TO_DATE(a5, '%m/%d/%Y') > '2021-03-02';
- SQL Server:用
CONVERT,第三个参数101对应月/日/年格式
SELECT * WHERE CONVERT(date, a5, 101) > '2021-03-02';
- PostgreSQL:用
TO_DATE指定格式
SELECT * WHERE TO_DATE(a5, 'MM/DD/YYYY') > '2021-03-02';
你提供的错误结果截图

内容的提问来源于stack exchange,提问作者BlueGuyNeedsHelp
相关产品推荐
相关产品推荐

