3

日付をupdatedOnとして保存しました(「2012-11-1212:38:43」などの値)

私の質問は次のとおりです。

select * from mytable 
where updatedOn >= '11/12/2012' AND updatedOn <= '11/12/2012'

from私の目標は、与えられた日付とto日付を含むすべてのレコードを取得することです

4

4 に答える 4

3

回避<=して代わりに使用<すると、データに時間コンポーネントがあるかどうかに関係なく機能するロジックを使用せざるを得なくなります。

SELECT
  *
FROM
  myTable
WHERE
      updatedOn >= '2012-12-11'
  AND updatedOn <  '2012-12-11' + INTERVAL '1' DAY
于 2012-11-12T15:09:02.637 に答える
1

DATE()列のコンポーネントを取得し、MySQLでサポートされている形式updatedOnの1つで日付リテラルをフォーマットする必要があります。

SELECT *
FROM   mytable
WHERE  DATE(updatedOn) BETWEEN '2012-12-11'
                           AND '2012-12-11'

または、MySQLのSTR_TO_DATE()関数を使用して、文字列をMySQLの日付に変換します。

SELECT *
FROM   mytable
WHERE  DATE(updatedOn) BETWEEN STR_TO_DATE('11/12/2012', '%d/%m/%Y')
                           AND STR_TO_DATE('11/12/2012', '%d/%m/%Y') 
于 2012-11-12T15:08:04.153 に答える
1

あなたは試す必要があります

select * from mytable 
where updatedOn >= '11/12/2012' AND updatedOn <= '11/12/2012 23:59:59.999'

あなたが書くとき'11/12/2012'それはを意味する'11/12/2012 00:00:00'ので、あなたはまた文字列に時間を追加する必要があります

編集:@Demsが指摘したように、私もミリ秒を考慮する必要がありました

于 2012-11-12T15:12:15.040 に答える
0

DATE関数を使用する必要があります-

SELECT
  *
FROM
  mytable
WHERE
  DATE(updatedOn) = '2012-12-11'
于 2012-11-12T15:10:05.147 に答える