Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    query date compleanno problema

    Oggi son sempre qui, uff

    io ho messo giu questa query:

    codice:
    "SELECT *,
    DATE_FORMAT(data_nascita,'%d-%m-%Y') as data_nascita_it,
    year(curdate())-year(data_nascita)-(right(curdate(),0)<right(data_nascita,0)) AS anni
    FROM personale
    WHERE date_format(data_nascita,'%m-%d')
    between date_format('".$_GET['data_start']."','%m-%d') AND
    date_format('".$_GET['data_end']."','%m-%d') ORDER BY cognome ASC"
    Funziona, ma se dal form dove scelgo il range di date metto per esempio dal 1 dicembre 2008 al 3o gennaio 2009 non mi trova niente e non è reale, praticamente se la ricerca si accavalla tra due anni non trova nulla, credo che il probklema stia in between ma non ne esco.

    Grazie

    SK

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Mi sembra che così funzioni

    codice:
    select * from tabella
    where date_format(data_nascita,"%m-%d")
    >= date_format('2008-12-01',"%m-%d")
    or date_format(data_nascita,"%m-%d") <= date_format('2009-01-30',"%m-%d")
    o anche così

    codice:
    select * from tabella
    where month(data_nascita) >= 12 and day(data_nascita) >= 1 or
    month(data_nascita) <= 1 and day(data_nascita) <= 30

  3. #3
    Originariamente inviato da nicola75ss
    Mi sembra che così funzioni

    codice:
    select * from tabella
    where date_format(data_nascita,"%m-%d")
    >= date_format('2008-12-01',"%m-%d")
    or date_format(data_nascita,"%m-%d") <= date_format('2009-01-30',"%m-%d")
    o anche così

    codice:
    select * from tabella
    where month(data_nascita) >= 12 and day(data_nascita) >= 1 or
    month(data_nascita) <= 1 and day(data_nascita) <= 30
    Ho provato con

    codice:
    "select * from personale
    where date_format(data_nascita,'%m-%d')
    >= date_format('".$_GET['data_start']."','%m-%d')
    or date_format(data_nascita,'%m-%d') <= date_format('".$_GET['data_end']."','%m-%d')"
    ma praticamente li estrae tutti

  4. #4
    Originariamente inviato da serialkiller
    Ho provato con

    codice:
    "select * from personale
    where date_format(data_nascita,'%m-%d')
    >= date_format('".$_GET['data_start']."','%m-%d')
    or date_format(data_nascita,'%m-%d') <= date_format('".$_GET['data_end']."','%m-%d')"
    ma praticamente li estrae tutti
    codice:
    "select * from personale
    where date_format(data_nascita, '%m') IN(12,1)

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Originariamente inviato da piero.mac
    codice:
    "select * from personale
    where date_format(data_nascita, '%m') IN(12,1)
    Ma dovendo passare due range di date come agisco?

    Ricavando dalle due date solo il mese che in questo caso sarebbero 12 e 01?

    O non ho capito na fava?


  6. #6
    codice:
    SELECT *,
    DATE_FORMAT(data_nascita,'%d-%m-%Y') as data_nascita_it,
    year(curdate())-year(data_nascita)-(right(curdate(),0)<right(data_nascita,0)) AS anni 
    FROM personale
    WHERE date_format(data_nascita, '%m') IN(MONTH('".$_GET['data_start']."'),MONTH('".$_GET['data_end']."'))
    Ci sono ?

  7. #7
    Sembrerebbe di si, ora ho un problema con anni, se passo sempre un rage tipo dicembre 2008 - gennaio 2009 chi è nato nel gennaio 2009 risulta avere un anno in medo di quel che dovrebbe avere, cioè tiene conto del primo anno ovvero 2008...uff :master:

    Cambiando la query in:

    codice:
    SELECT *,
    DATE_FORMAT(data_nascita,'%d-%m-%Y') as data_nascita_it,
    year('".$_GET['data_start']."')-year(data_nascita)-(right('".$_GET['data_start']."',0)<right(data_nascita,0)) AS anni 
    FROM personale
    WHERE date_format(data_nascita,'%m') IN(MONTH('".$_GET['data_start']."'),MONTH('".$_GET['data_end']."'))

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.