0

以下は、現在の(すべての)月と(現在の)年がデータベースの日付列に存在するかどうかを検出しているmysqlクエリです。クエリは正常に機能していますが、テーブルのすべての行に対して個別に実行され、その行に特定の一致があるテーブルに存在するすべての行数を返します。私がしたいことは、次のクエリが単一の行を返す必要があり、指定された日付がテーブルに存在するかどうか (日付列のどこかに) を伝えることです。これを行うには、次のクエリを変更する方法を教えてください。ありがとう

SELECT 
IF(DATE_FORMAT(FROM_UNIXTIME(dt_note_created),'%Y%m') =  CONCAT((DATE_FORMAT(NOW(),'%Y')),'01'),1,0) as jan,
IF(DATE_FORMAT(FROM_UNIXTIME(dt_note_created),'%Y%m') =  CONCAT((DATE_FORMAT(NOW(),'%Y')),'02'),1,0) as feb,
IF(DATE_FORMAT(FROM_UNIXTIME(dt_note_created),'%Y%m') =  CONCAT((DATE_FORMAT(NOW(),'%Y')),'03'),1,0) as mar,
IF(DATE_FORMAT(FROM_UNIXTIME(dt_note_created),'%Y%m') =  CONCAT((DATE_FORMAT(NOW(),'%Y')),'04'),1,0) as apr,
IF(DATE_FORMAT(FROM_UNIXTIME(dt_note_created),'%Y%m') =  CONCAT((DATE_FORMAT(NOW(),'%Y')),'05'),1,0) as may,
IF(DATE_FORMAT(FROM_UNIXTIME(dt_note_created),'%Y%m') =  CONCAT((DATE_FORMAT(NOW(),'%Y')),'06'),1,0) as jun,
IF(DATE_FORMAT(FROM_UNIXTIME(dt_note_created),'%Y%m') =  CONCAT((DATE_FORMAT(NOW(),'%Y')),'07'),1,0) as jul,
IF(DATE_FORMAT(FROM_UNIXTIME(dt_note_created),'%Y%m') =  CONCAT((DATE_FORMAT(NOW(),'%Y')),'08'),1,0) as aug,
IF(DATE_FORMAT(FROM_UNIXTIME(dt_note_created),'%Y%m') =  CONCAT((DATE_FORMAT(NOW(),'%Y')),'09'),1,0) as sep,
IF(DATE_FORMAT(FROM_UNIXTIME(dt_note_created),'%Y%m') =  CONCAT((DATE_FORMAT(NOW(),'%Y')),'10'),1,0) as oct,
IF(DATE_FORMAT(FROM_UNIXTIME(dt_note_created),'%Y%m') =  CONCAT((DATE_FORMAT(NOW(),'%Y')),'11'),1,0) as nov,
IF(DATE_FORMAT(FROM_UNIXTIME(dt_note_created),'%Y%m') =  CONCAT((DATE_FORMAT(NOW(),'%Y')),'12'),1,0) as decb
FROM Notes

出力:

ヤン | 2月 | 3 月 ....など... | 11月 | 12月
 0 1 1 0 1

0 と 1 は、月と年が日付の列全体に存在するかどうかを示すフラグです
4

1 に答える 1

1

正しく理解したかどうかはわかりませんが、現在の月と年に一致する日付が列に少なくとも1つあるかどうかだけを確認したい場合は、

SELECT COUNT(*) 
FROM date
WHERE MONTH(dt_note_created) = MONTH(Now()) 
  AND YEAR(dt_note_created) = YEAR(Now()) 

そのような日付がない場合は0を返し、そうでない場合は合計の日付数を返します。

試す

SELECT DISTINCT MONTH(dt_note_created)
FROM date
WHERE YEAR(dt_note_created) = YEAR(Now())

日付列に含まれる異なる月のリストを取得します。

次のようなものを返します(1月、2月、8月、11月の日付の場合):

1
2
8
11

そして、この数が12未満である限り、毎月少なくとも1つの日付はありません。

于 2012-11-20T15:45:06.593 に答える