Le date nel databse e confronti

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio

Monital

Utente Attivo
15 Apr 2009
778
2
18
Salud.

Sono sicuro che è na sciocchezza ma stoa ndndo nel pallone

a presicndere dall'aiuto non mi entra in testa questo concetto.

Allora ho uno script dove inserisco delle date inq uesto formato

20/07/2012 14.52.50

in pratica ho bisogno di mettere una serie di queste date nel database e poi confrontarle e in alcuni casi estrarle

credevo che la funzione giusto fosse mktime e difatti ho trasformato tutte le date in entrata con mktime, salto i vari ciclie procedimenti perchè gli errori on sono li

PHP:
$valori=mktime($date);

detto ciò faccio un esempio epr far capire meglio il problema

ho una data madre poniamo il 20/07/2012 23:45:00 che mi restituisce un mktime pari a 1339367321

poi ho calcolato al data di oggi con

PHP:
$today=date("d/m/Y H:i:s");
riportando il formato delle date che isnerisco

estraggo l'mktime che mi risulta secondi + secondi meno = 1339406921

come potete notare mktime di oggi è superiore a quella del 20/07 quindi non posso effettuare nessun confronto tra date

qualcuno mispiega come mai?

cosa non ho capito del concetto date?

thank
 
mktime non si usa come stai facendo tu, guarda nel manuale di PHP.

Nel tuo caso potresti usare il metodo statico DateTime::createFromFormat:
PHP:
<?php
$date = DateTime::createFromFormat('d-m-Y H.i.s', '11-06-2012 16.55.33');
$valori = $date->getTimestamp();
?>
 
Ultima modifica:
mktime non si usa come stai facendo tu, guarda nel manuale di PHP.

Nel tuo caso potresti usare il metodo statico DateTime::createFromFormat:
PHP:
<?php
$date = DateTime::createFromFormat('d-m-Y H.i.s', '11-06-2012 16.55.33');
$valori = $date->getTimestamp();
?>

già :hammer:

in pratica per poterlo usare cosi dovrei esploderlo non si capisce quante volte.

il tuo sistema però mi dà errore

Call to undefined method DateTime::createFromFormat()

però boh volevo mantenere quel formato ma inserire nel databse dei numeri interi anche se poi se dovessi estrarli a sto punto sarebbe un bel casino.

forse converebbe quasi quasi crear euna funzione epr un explode

nel caso come potrei esplodere quel formato usando meno codice possibile ?
 
@monital
Che versione di PHP stai utilizzando? Se DateTime::createFromFormat() ti da errore deve essere vecchiotta.
 
@monital
Che versione di PHP stai utilizzando? Se DateTime::createFromFormat() ti da errore deve essere vecchiotta.

sul sito di altervista in cui collaboro vedevo ora che so apssato alla 5.2, che poi loa vevo fatto di prova datoc he con aruba la versione php 5(se non erro) non mia ccettava alcune istruzioni tipo mysql_numrows.

cmq ho verificato su altervista e se non ho sbagliato a vedere ho la 5.2
 
ho consumato fino l'ultimo neurone ma non mi è venuta nessuna idea su come mantenere quel formato e salvarlo sul database per poi recuperarlo e poter fare i vari confronti.

che poi un ulteriore problema che mi aggiunge le difficoltà e che lo script java mi restituisce questo formato
PHP:
Allora ho uno script dove inserisco delle date inq uesto formato

20/07/2012 14.52.50

quindi non saprei manco esploderlo
 
Puoi formattare la data per l'inserimento in msql anche cosi:

PHP:
<?php

function data_per_mysql($data) {
    //dividi la data dall'ora
    $split = explode(' ', trim($data));
    //esplodi inverti la data
    $data = array_reverse(explode('/', $split[0]));
    // sostituisci il punto con i due punti
    $ora = str_replace(".", ":", $split[1]);
    // ricomponi data e ora
    return implode('-', $data) . " " .  $ora;
}
// inizializzi la data
$data = "20/07/2012 14.52.50";
// richiami la funzione 
$data_per_mysql = data_per_mysql($data);
// stampi il risultato
echo $data_per_mysql;
?>
 
ok ciric la funzione funge ma come la inserisco nel database? non dovrei trasformarla in un numero intero?

oppure isnerisco la variabile cosi com'è? se si il campo mysql che formato dovrei dargli? DATE? TIMESTAMP?
 
ciao
sarà perche non mi diace il campo date, ma se usi la data tipo
2012/03/16 09:33:22
puoi settare il campo a varchar (19)
se usi il timestamp (il mio prefererto)
metti il campo int (12)
 
La funzione che ti ho postato trasforma la data in questo formato 2012-06-16 09:37:12
puoi usare sia DATETIME che TIMESTAMP
 
ok bene, aprescindere che manco ame paice quel campo date ho provato il datetime al momento, ma dopo devo fare dele prove epr l'esterazione dei dati,

ma poi come mi restituisce le date nei casi sopra citati da voi?

riusciròa far fare deic onfronti con il formato che mi restituiscelo script?
 
Puoi fare tutti i confronti che vuoi

il codice cambierà in base a come deciderai di salvare le date sul db

Che confronti avevi in mente?
 
Puoi fare tutti i confronti che vuoi

il codice cambierà in base a come deciderai di salvare le date sul db

Che confronti avevi in mente?

tipo mi salva al data1 e la data due

e poi che so estrarre la data 1 e verificare se sia maggiore o minore della data odierna oppure della data2

cmq dopo pranzo mi ci metto e vi aggiorno, l'importante e he quella funzione fa proprio quello che serve al momento
 
ok perfetto funge tutto lasciando il campo in datetime

l'unico neo e che se voglio estrarre una data vorrei rivederla con il mio formato,immagino dovrei rifare la stessa funzione all'inverso
 

Discussioni simili