我有以下查询:
SELECT tbl_usuarios.Correo,
tbl_alertas.Id,
tbl_alertas.Purpose,
tbl_alertas.Status,
tbl_alertas.OpenDate,
tbl_alertas.CloseDate,
tbl_alertas.Owner,
tbl_alertas.ValueStream,
tbl_alertas.Family
FROM tbl_usuarios
INNER JOIN tbl_alertas ON tbl_usuarios.Nombre = tbl_alertas.Owner
WHERE (STATUS = 'En aprobacion' OR STATUS = 'Activa')
AND CloseDate < CURDATE()
作为此查询的结果,我有下表:
一切都还可以。
现在,问题是我将在我的网站中使用该查询,我创建了一个JavaScript函数,该函数将每隔5个月和每19个月执行一次。我的问题是,我该怎么办才能选择他的CloseDate所在的行&lt; = yyyy-mm-07或者CloseDate&gt; = yyyy-mm-07和&lt; = yyyy-mm-21,具体取决于CURDATE(第5或第19位) ),例如:
Curdate = yyyy-mm-05。
预期结果:来自Id 00003的数据
我尝试的是在查询中添加另一个AND,如下所示:
AND CloseDate < CURDATE() AND CloseDate <= '2016-09-07'
如果我的问题不太明确,让我解释一下,我想选择CloseDate&#39; 2016-09-07&#39;当curdate =&#39; 2016-whatever-05,06&#39;,07或选择CloseDate&#39; 2016-09-21&#39; curdate =&#39; 2016-whatever-19,20,21&#39;。
答案 0 :(得分:0)
不知道我是否正确理解了您的问题,但请检查 DAYOFMONTH() 或只需 DAY()功能。
返回日期的月份日期,范围为1到31或0 日期如&#39; 0000-00-00&#39;或者&#39; 2008-00-00&#39;零日零件。
您可以像这样使用
SELECT tbl_usuarios.Correo,
tbl_alertas.Id, tbl_alertas.Purpose,
tbl_alertas.Status, tbl_alertas.OpenDate,
tbl_alertas.CloseDate,
tbl_alertas.Owner,
tbl_alertas.ValueStream,
tbl_alertas.Family
FROM tbl_usuarios
INNER JOIN tbl_alertas
ON tbl_usuarios.Nombre = tbl_alertas.Owner
WHERE (STATUS = 'En aprobacion' OR STATUS = 'Activa')
AND (CASE
WHEN DAY(CURDATE()) = '5' AND DATE(CloseDate) <= DATE_FORMAT(NOW() ,'%Y-%m-07')
THEN 1
WHEN DAY(CURDATE()) = '19' AND (DATE(CloseDate) >= DATE_FORMAT(NOW() ,'%Y-%m-07') AND DATE(CloseDate) <= DATE_FORMAT(NOW() ,'%Y-%m-21'))
THEN 1
ELSE 0
END)