Created
July 16, 2018 19:47
-
-
Save bolivarbutzke/ed68c3defc736b5522676a1f132e367d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Exemplo PHP com Code Igniter pra filtrar próximos aniversariantes do banco MySQL | |
// Publiquei originalmente em http://dicasdobolivar.blogspot.com/2016/05/pegar-proximos-aniversarios-em-php.html | |
// ANO ATUAL | |
$ano = date('Y'); | |
// FILTRO DE DATAS | |
$data_inicial = date('Y-m-d'); | |
$data_final = date('Y-m-d', strtotime("+7 days")); | |
//Monta cláusula WHERE | |
$WHERE = "WHERE CONCAT('$ano-',RIGHT(data_nascimento,5)) BETWEEN '$data_inicial' AND '$data_final'"; | |
if (date('Y',strtotime($data_final)) > date('Y',strtotime($data_inicial))) { | |
//die("Passou o ano"); | |
// no caso de mudar o ano, precisa fazer um teste diferenciado | |
// exemplo: Hoje = 30/12/2016, a data final vai ter ano 2017 e inicial 2016, no CONCAT | |
// vai ficar quem tem aniversario em 2 de janeiro como 2016-01-02, logo, filtrando | |
// pelo BETWEEN '2016-12-30' AND '2017-01-06' não entraria na lista | |
# SOLUÇÃO, testar as duas possibilidades, usando "OR", trocando o ano para ano que vem | |
$anoquevem = $ano+1; | |
$WHERE = "WHERE ( CONCAT('$ano-',RIGHT(data_nascimento,5)) BETWEEN '$data_inicial' AND '$data_final' OR CONCAT('$anoquevem-',RIGHT(data_nascimento,5)) BETWEEN '$data_inicial' AND '$data_final' )"; | |
} | |
$SQL = "SELECT date_format(data_nascimento,'%d/%m') as aniver, nome FROM pessoas " . $WHERE; | |
$query = $this->db->query($SQL); | |
$data = $query->result(); | |
//print_r($this->db->last_query()); die(); | |
return $data; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment