Tengo 2 columnas (hay más) en la tabla clients.

conn_date     bill_date
=======================
2016-08-25    2016-09-04
2016-08-01    2016-09-03
2016-08-08    2016-09-01
2016-08-09    2016-09-01

Ahora quiero mostrar todos los datos si el mes seleccionado es = (igual) o> mayor que conn_date. Puedo obtener el mes seleccionado de html select tag e. gramo. : 1, 2, 9.

Para ese propósito, estoy usando la siguiente consulta pero muestra datos menores que conn_date

"SELECT cbp.advance_amount, cbp.bill_month, cbp.due_amount, cbp.pay_amount, c.is_active, c.client_id, c.user_id, c.address, c.contact_no, zone.zone_name, package.package_name, c.monthly_bill, c.bill_date FROM clients 
AS c LEFT JOIN zone ON zone.zone_id = c.zone_id 
LEFT JOIN package ON package.package_id = c.package_id 
LEFT JOIN clients_pay_bill AS cbp ON cbp.client_id = c.client_id 
WHERE c.uid = '$uid' AND c.is_active = 1 
AND MONTH(c.conn_date) > $selected_month 

Usando print_r

SELECT cbp.advance_amount, cbp.bill_month, cbp.due_amount, cbp.pay_amount,
c.is_active, c.client_id, c.user_id, c.address, c.contact_no, zone.zone_name, package.package_name, c.monthly_bill, c.bill_date 
FROM clients AS c 
LEFT JOIN zone ON zone.zone_id = c.zone_id 
LEFT JOIN package ON package.package_id = c.package_id 
LEFT JOIN clients_pay_bill AS cbp ON cbp.client_id = c.client_id 
WHERE c.uid = '6' AND c.is_active = 1 
AND MONTH(c.conn_date) > 4 AND c.zone_id != '' 
ORDER BY c.client_id DESC 

Imagen del mes seleccionado

enter image description here

0
shibbir ahmed 29 ago. 2016 a las 13:35

2 respuestas

La mejor respuesta

Básicamente, quiero mostrar datos que no sean inferiores a conn_date del mes seleccionado

La consulta de mysql para eso es

SELECT * FROM clients WHERE MONTH(conn_date)<='".$selected_month."' 
1
Henrikki 29 ago. 2016 a las 11:41

Según la descripción de su problema, parece que desea:

select c.*
from clients c
where conn_date >= str_to_date(concat(date_format(now(), '%Y-%m'), '-01'))

Esto devuelve fechas mayores que la hora actual. Si desea un mes en particular de un año en particular:

select c.*
from clients c
where conn_date >= str_to_date(concat_ws('-', $year, $month, '01'))

No estoy seguro de qué hace su consulta, porque utiliza varias tablas que no se mencionan en la pregunta.

0
Gordon Linoff 29 ago. 2016 a las 10:40