0

BETWEEN 演算子を使用して、varchar (形式: "2012.04") として保存されている日付を選択するにはどうすればよいですか?

このフィールドで 1 年間隔を選択する必要があります。

今、私はこれを試していますが、これにより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 セクションの最初の値から正確に -1 年になるように、BETWEEN の 2 番目の値を計算する必要があります。

どうもありがとうございました!!

4

2 に答える 2

1

日付が固定長の文字列のように見えることを考えると、文字列比較を使用しないのはなぜですか?:

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

日付の順序を逆にして、最初の日付が 2 番目の日付より少ないほとんどの 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 に答える