如何使用BETWEEN运算符选择存储为varchar(格式:“2012.04”)的日期?
我需要在这个字段上选择一年的间隔。
现在我正在尝试这个,但这会给我的MySQL语法错误:
SELECT DISTINCT monthcol
FROM bo_alerts
WHERE STR_TO_DATE(monthcol , '%Y.%m') BETWEEN
(STR_TO_DATE('2012.04', '%Y.%m') AND STR_TO_DATE('2011.03', '%Y.%m'))
ORDER BY monthcol DESC
日期现在是静态的(用于测试),但我需要计算BETWEEN中的第二个值,以便它与BETWEEN部分的第一个值精确相差1年。
非常感谢!!
答案 0 :(得分:1)
鉴于日期似乎是固定长度的字符串,为什么不使用字符串比较?:
SELECT DISTINCT monthcol
FROM bo_alerts
WHERE monthcol BETWEEN '2011.03' AND '2012.04'
ORDER BY monthcol DESC
请注意,我颠倒了日期的顺序,以满足大多数第一个小于第二个的SQL实现。
答案 1 :(得分:0)
Renove '.'
从它起作用的日期开始。
尝试以下查询:
SELECT DISTINCT monthcol
FROM bo_alerts
WHERE concat(LEFT(monthcol,4),RIGHT(monthcol,2)) BETWEEN 201204 AND 201103
ORDER BY monthcol DESC