查询之间的varchar日期

时间:2012-04-18 09:00:51

标签: mysql

如何使用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年。

非常感谢!!

2 个答案:

答案 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