Confronto campo con ora corrente ... come???

Devo impostare uno script che mi memorizzi in una variabile l'ora corrente (nel formato hh:mm:ss) e poi me la confronti con quella memorizzata nel campo di un DB ....... per poi mostrare o meno una dicitura "SCADUTO" ...

Come imposto lo script per catturare l'ora nel formato hh:mm:ss e come imposto il tipo di campo in mysql???

Grazie!

inviato 10 anni fa
ninext
X 0 X

Per lo script, un'occhiata al manuale ti può bastare: http://it.php.net/manual/it/function.date.php

Per l'sql chiedi ad altri.

risposto 10 anni fa
Marco Grazia
X 0 X

Nel DB che tipo di campo conserva la data?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

La data è archiviata in un campo DATE nel formato 0000-00-00 ..... e l'ora in un campo TIME nel formato 00:00:00 .....

Come mi comporto per creare la query di cui ho bisogno ??

risposto 9 anni fa
ninext
X 0 X

devi usare un unico campo di tipo date-time!

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Devo farlo per forza???? ... quindi così non c'è modo di ottenere ciò che mi serve??

DATETIME col formato "0000-00-00 00:00:00" ?? o sbaglio??

e per il confronto con la data e l'ora corrente?

Grazie ... sei sempre disponibile!

risposto 9 anni fa
ninext
X 0 X

se usi un unico campo le cose sono moooolto più facili. Da un campo date-time è facile con una SELECT ottenere la sua versione "timestamp" (è un semplice numero intero!) e poi confrontarla con il timestamp attuale ottenuto da PHP.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Scusate l'intrusione, se quello che gli serve è solo il controllo su degli orari, credo che possa utilizzare le funzioni di mysql:

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

ad esempio:

SELECT * FROM tabella WHERE curtime() <= 'campo_data_nel_db'

(dove curtime restituisce l'ora attuale.)

Se invece il controllo dev'essere su data/ora, allora come consigliato da Gianni si dovrebbe mettere tutto in un campo date/time, se non hai la possibilità di modificare il DB, dovresti utilizzare la funzione concat() di mysql ( http://dev.mysql.com/doc/refman/5.0/en/string-functions.html ).

Esempio:

SELECT * FROM tabella WHERE now() <= CONCAT(data_nel_db,ora_nel_db)

CMQ se dai uno sguardo ai primo link che ti ho mandato, magari trovi qualcosa che fa al caso tuo.

ciao

Lore

risposto 9 anni fa
Lore
Lore
1
X 0 X

Sicuro che funziona questa query?

SELECT * FROM tabella WHERE now() <= CONCAT(data_nel_db,ora_nel_db)

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

hai ragione, manca uno spazio:

SELECT * FROM tabella WHERE now() <= CONCAT(data_nel_db,' ',ora_nel_db)

se no sarebbe uscito: yyyy-mm-ddH:i:s

onvece di yyyy-mm-dd H:i:s

sorry

ciao

Lore

risposto 9 anni fa
Lore
Lore
1
X 0 X

Provo subito e vi faccio sapere! ...grazie mille!

risposto 9 anni fa
ninext
X 0 X

La soluzione del concat, per quanto possa funzionare, è però da evitare (come la peste) se la tabella in questione contiene molte righe. In tal caso è necessario usare un unico campo time-date.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

ma se non puoi modificare la tabella (e gli script di conseguenza) puoi mettere una doppia clausola where!

risposto 9 anni fa
LonelyWolf
X 0 X
devi usare un unico campo di tipo date-time!

e se in un campo di testo gli fai inserire dal php il timestamp?

risposto 9 anni fa
joule
X 0 X
e se in un campo di testo gli fai inserire dal php il timestamp?

Combini una vera schifezza! Un database deve (possibilmente) sapere che tipo di dato sta conservando. In questo modo può utilizzare la tecnica (algoritmi, indici, ecc.) più adeguata, e quindi veloce, per le diverse query che gli vengono fatte.

 :excl: Mai inserire un numero (o una data) in un campo di testo (varchar e simili).  :excl:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda