以下是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
输出:
jan | feb | Mar ....and so on... | nov | dec 0 1 1 0 1 0 and 1 are flags which are telling if the monthandyear exist in the whole column of date or not
答案 0 :(得分: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,每个月至少不会有一个日期。