原创

MySQL-代码-查询出当前年度或到期当天没有数据记录的数据

相关需求:
超期未评价记录(自然年最后一天和当年合同到期结束的时间)
查合同类信息档案表和相关方安全绩效评价表,写入 超期未评价记录
//每个年度最后一天要命中 或 到期前最后1天都要命中

//WHERE的AND NOT EXISTS 前段是确定今天(本次执行)是否符合时间要求
//WHERE的AND NOT EXISTS 后段是判断响应需求的数据是否已存在

SELECT
h.id, h.qiyemingcheng,h.xiangmumingcheng,h.hetongjieshushijian,DATE_FORMAT( h.`hetongjieshushijian`, '%Y'
),DATE_FORMAT( now( ), '%Y' ) ,h.disable
FROM
ent_sichuanzhongyananqua_datapool_hetonglei h
WHERE
(

(
-- 是否符合当前年度最后一天
( DATE_FORMAT( now( ), '%m-%d' ) = "12-31" ) AND DATE_FORMAT( h.`hetongjieshushijian`, '%Y' ) > DATE_FORMAT(now(
), '%Y' )
)

OR

(
-- 是否符合到期当天
DATE_FORMAT( h.`hetongjieshushijian`, '%Y-%m-%d' ) = DATE_FORMAT( now( ), '%Y-%m-%d' )
)

)

AND NOT EXISTS (
SELECT 1 FROM ent_sichuanzhongyananqua_datapool_xiangguanfanganquanj j
WHERE j.`qiyemingcheng` = h.`qiyemingcheng`
and j.`hetongbianhao` = h.`hetongbianhao`
and j.disable <> 1
AND (
(
-- 当前年度有没有数据记录
( j.`pingjiashijian` BETWEEN DATE_FORMAT( now( ), '%Y-01-01 00:00:00' ) AND DATE_FORMAT( now( ), '%Y-12-31
23:59:59' ) ) AND DATE_FORMAT( h.`hetongjieshushijian`, '%Y' ) > DATE_FORMAT( now( ), '%Y' )
)
OR
-- 到期当天有没有数据记录
( j.`pingjiashijian`<= h.`hetongjieshushijian` AND DATE_FORMAT( h.`hetongjieshushijian`, '%Y-%m-%d' ) =
DATE_FORMAT( now( ), '%Y-%m-%d' ) )
)

)
AND h.`disable` <> 1 group by h.id
正文到此结束
本文目录