Skip to content

Instantly share code, notes, and snippets.

@bolivarbutzke
Created July 16, 2018 19:47
Show Gist options
  • Save bolivarbutzke/ed68c3defc736b5522676a1f132e367d to your computer and use it in GitHub Desktop.
Save bolivarbutzke/ed68c3defc736b5522676a1f132e367d to your computer and use it in GitHub Desktop.
## 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