0

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

非常感谢你!!

4

2 回答 2

1

鉴于日期似乎是固定长度的字符串,为什么不使用字符串比较?:

SELECT DISTINCT monthcol
FROM bo_alerts
WHERE monthcol BETWEEN '2011.03' AND '2012.04'
ORDER BY monthcol DESC

请注意,我颠倒了日期的顺序以满足大多数第一个小于第二个的 SQL 实现。

于 2012-04-18T09:08:45.503 回答
0

'.'日期开始更新它将起作用。

试试下面的查询:

SELECT DISTINCT monthcol 
FROM bo_alerts 
WHERE concat(LEFT(monthcol,4),RIGHT(monthcol,2)) BETWEEN 201204  AND 201103
ORDER BY monthcol DESC
于 2012-04-18T09:09:00.550 回答