Newsgroup: it.comp.www.php
Titolo: Confronto date e data in DataBase - Incompatibili

Salve,
lo so, è l'ennesimo post a riguardo ma nonostante ciò non riesco a
risolvere il problema.
Come da topic, sto cercando di fare il confronto tra una data ottenuta
dalla funzione php DATE e una data
memorizzata all'interno di un DataBase.
Verificando con un semplice IF se le due date risultano uguali
( avendo la data del db lo stesso valore della
data odierna ), mi viene restituito false. Ho provato anche ad
utilizzare time() e fare una explode in maniera
da ottenere INT , ma anche in questo caso nulla da fare. Credo quindi
sia un problema di incompatibilità,tra
i due tipi di dati. Come faccio quindi a fare un confronto tra la data
di DATE e la data nel db ???
Grazie

 
Se per DATE intendi la funzione
date -- Format a local time/date
Description
string date ( string format [, int timestamp] )
il risultato è una stringa. L'output dal tuo db è una stringa ma 
potrebbero differire nella formattazione. Stampa entrambi i valori a 
video e verifica le differenze
Che database usi, formato del campo e con quale query estrai il valore?
	Francesco


Si date intendo la funzione date di php date("d/m/Y");
Allora uso un database My_SQL. Per quanto riguarda i campi all'interno
del database ho utilizzato diverse opzioni proprio per
poter risolvere sto problema. Allora ho provato utilizzando 3 campi
distinti, giorno,mese e anno, sia come VARCHAR che come INT.
Poi ho provato 1 singolo campo con formato DATA e con formato VARCHAR
formattato secondo GGMMYY.
Naturalmente avendo provato 4 modalità differenti ho fatto query
differenti per ogni caso :
$query = mysql_query("Select ggend,mmend,yyend FROM users WHERE Id
='X' "); per il caso dei 3 campi
$query = mysql_query("Select dataTerm FROM users WHERE Id ='X' "); per
il caso del singolo campo.
Sono nelle tue mani.
Grazie

 ='X' "); per il caso dei 3 campi
Puoi semplificare al massimo in questo modo:
campo nel db formato DATE
$query = "Select DATE_FORMAT(campo, '%Y-%m-%d') as campo_f .." [1]
Nel codice php:
Il valore della data da php da dove lo prendi??
in tal caso puoi trasformarlo in timestamp, utilizzando la funzione mktime:
$val_php = date("Y-m-d", mktime(0,0,0, $tmp[1], $tmp[0], $tmp[2]));
if($val_php == mysql_result($res, 0, 'campo_f')) echo "OK"
Occhio al timestamp per le date < del 1970 o > del 2038
[1] Il date_format in mysql č una sicurezza in piů nel caso di 
localizzazione del server
	Francesco

Se ti serve confrontare solo l adata e non l'ora la soluzione più 
semplice ed elementare se tu non hai problemi di cambiare il campo nella 
tabella è quella di definirlo come un INT(8) ed inserirvi le date nella 
forma yyyymmgg, questo ti permette di confronare la tua data in PHP
date(Ymd);
con la data presa dal DB come se fossero 2 interi e da qui puoi capire 
anche se una è minore o maggiore dall'altra dato che se oggi è
20070201 //(2 febbraio 07)
sicuramente sarà inferiore a 
20070131 //(31 gennaio 07) 
presa dal DB dato che incrementando il giorno aumenta anche il numero.
jumpaolo

 ha scritto nel messaggio
news:1170328908....@l53g2000cwa.googlegroups.com...

scrivi la query che di da la data (db1)
scrivi la query che di da la data (db2)
prendi le strinhe e le spezzi in explode("/",$row['data']);
day month e year
adesso le converti in timestamp con la funzione mktime
fai gli if
e la differnza
Grazie