SQL使用BETWEEN查询日期段报#1054未知列错误如何解决
错误产生原因
- 日期值未添加字符串引号是触发本次1054报错的直接原因:SQL解析时会把未加引号的
4th-June-2022中的-识别为减法运算符,将4th判定为需要查询的字段名,但activity_log_admins表中不存在该字段,因此抛出未知列错误。 - 即使为日期值补上引号,带th序数后缀的
4th-June-2022也不属于SQL默认支持的标准日期格式,直接传入仍会触发日期解析异常。
修复方案
使用全数据库兼容的标准日期格式YYYY-MM-DD,同时给日期字符串值包裹单引号,修正后的可正常执行语句如下:
SELECT * FROM activity_log_admins WHERE query_date BETWEEN '2022-06-04' AND '2022-06-10'
如果必须使用4th-June-2022这类自定义格式的日期字符串,需要调用对应数据库的日期转换函数显式解析格式,以MySQL为例写法如下:
SELECT * FROM activity_log_admins WHERE query_date BETWEEN STR_TO_DATE('4th-June-2022', '%D-%M-%Y') AND STR_TO_DATE('10th-June-2022', '%D-%M-%Y')
注意:不同数据库的日期解析函数名、格式符规则存在差异,优先使用'YYYY-MM-DD'标准格式可以避免绝大多数跨库兼容问题。
内容的提问来源于stack exchange,提问作者Ngode Danuel
相关产品推荐
相关产品推荐

