Home
Home
Tutorials
   PHP
   Java
   Tutti...
Manuali
SmartImage
Marketing
Downloads
Contatti
Affiliati

  Da vedere
Hosting
Statistiche per siti
Corsi per webmaster
Hardware
Processori


  OnFocus
Quanti internauti ci sono in Italia? Quanti nel mondo?

Array in JSON: come abilitarne l'uso

Nozioni base sull'output a video e sul cast

  Siti Amici
Miki News
Giochi gratis
Areagratis
Baratto Online
AI Machines
Guide e Manuali Gratis
Script e tutorial
E-cerca.com
WebApocalypse
Tropeaonline.it
Informazione & Servizi sul Forex
Annunci Gratuiti
Add to Technorati Favorites

Tutti i siti amici
Diventa Affiliato

 


Autore: Alessandro Coscia
Categoria: mysql
Livello: normale Livello normale

Creare date casuali con MySql

Generare date random per un ambiente di test completo

Vi potrebbe capitare di aver bisogno di generare date casuali all'interno di un database MySql, lo potrete fare molto semplicemente.
Seguono subito degli esempi di query che potrete testare su una tabella il quale dump è alla fine di questo articolo.

Un esempio: date casuali nel passato
UPDATE eventi SET data NOW() - INTERVAL RAND()*86400*30 second

Imposta la colonna "data" a oggi (NOW) meno un numero casuale di secondi da 0 a 86400*30, ovvero genera date casuali da oggi a 30 giorni fa.
Ogni riga avrà una data differente.

Al posto di second puoi anche inserire day, minute...
per esempio:
 UPDATE eventi SET data NOW() - INTERVAL RAND()*7 day

Genera date casuale da oggi a 7 giorni fa (minuti e secondi non vengono modificati rispetto a NOW).

Date casuali nel futuro
Ovviamente è anche possibile generare date nel futuro inserendo un più al posto del meno:
 UPDATE eventi SET data NOW() + INTERVAL RAND()*7 day

Genera date da oggi a a oggi + 7 giorni.

Date a random nel passato e nel futuro
Se vi servisse usare date casuali sia nel passato che nel futuro potreste usare l'IF e nuovamente il RAND()
 UPDATE eventi
   SET data 
= (IF((RAND() > 0.5),
      (NOW() + INTERVAL RAND()*7 day),
      (NOW() - INTERVAL RAND()*7 day)))
In questo caso quando RAND > 0.5 viene generata una data nel futuro (quindi la metà delle volte), altrimenti nel passato.
Ovviamente potrete cambiare la condizione RAND() > 0.5 a vostro piacimento

Tabella di riferimento
Tutte le query di esempio sono state testate sulla seguente tabella che potrete utilizzare per i vostri test:
 CREATE TABLE eventi (
  id int(11NOT NULL auto_increment,
  data timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  segnalato_da varchar(128NOT NULL,
  descrizione varchar(255NOT NULL,
  PRIMARY KEY  (id)
ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5;

INSERT INTO eventi (iddatasegnalato_dadescrizioneVALUES 
(1'2008-03-29 12:47:56''Alessandro''Scrive un articolo.'),
(
2'2008-03-29 12:48:19''Marco''Danneggia un database da 2 milioni di euro'),
(
3'2008-03-29 12:49:14''GianMa''Salva il database danneggiato con molta classe.'),
(
4'2008-03-29 12:49:14''Giulio''Crea una cittą nel suo gioco preferito.');



Query più sicure e debug Precedente Indice Successivo Meno codice più risultati con INSERT ... ON KEY DUPLICATE UPDATE
Query più sicure e debug Meno codice più risultati con INSERT ... ON KEY DUPLICATE UPDATE