0

これはmysqlに関するクエリです。2 つのテーブルを使用してビューを作成しました... テーブル内のフィールドの 1 つは「日付」で、デフォルト値はありません (null または dd-mm-yyyy など)。[ date between '2012-01-01' and '2012-03-31' ] を使用して条件付きクエリを実行すると、[ date between '2012-1-1' で取得した行とは異なる数の行が取得されます。 ' および '2012 年 3 月 31 日' ]。

「desc viewName」を使用した後のもう 1 つの重要な点は、その日付のデフォルト値が「0000-00-00」として表示されることです。

クエリが次の場合、120 行が取得されます。

select * from billing_master where date(pay_date) between '2012-1-1' and'2013-1-1';

クエリが次の場合、45 行が取得されます。

select * from billing_master where date(pay_date) between '2012-01-01' and'2013-01-01';

誰かがそれについて考えを持っていますか?

よろしく、Sohil S.

4

1 に答える 1

0

pay_date フィールドのデータ型が DATE であると仮定すると、

DATE_FORMAT(pay_date,'%Y-%m-%d')

VARCHAR などのタイプで、それを DATE 自体に変換するだけの場合

DATE_FORMAT(DATE(pay_date),'%Y-%m-%d')

クエリは次のようになります。

SELECT * FROM billing_master  
WHERE DATE_FORMAT(DATE(pay_date),'%Y-%m-%d')  
BETWEEN '2012-01-01' AND '2013-01-01';
于 2013-03-01T19:21:34.573 に答える