|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 1767
|
[SQL/JAVA] Creare data random
Mi serve creare una data random che rientri nei 15 giorni successivi alla data della creazione.
Ho trovato in giro questa istruzione per mysql: now() + interval rand()*15 day ma non funziona... SQLException: Data truncation: Incorrect date value: 'NOW() + INTERVAL RAND()*15 day' for column 'scadenza' at row 1 Forse sono io che sbaglio ad inserirla. Ho un preparedstatement ed imposto la data così: insertIngrediente.setString(3,"NOW() + INTERVAL RAND()*15 day"); Comunque, come posso generare in un altro modo, anche con un metodo java una data casuale entro 15 giorni nel futuro nel formato aaaa-mm-gg? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 1767
|
Dovrei aver risolto.
Se a qualcuno può tornare utile: Codice:
public static String dataCasuale() {
String data = "";
GregorianCalendar gc = new GregorianCalendar();
int anno = gc.get(GregorianCalendar.YEAR);
int mese = gc.get(GregorianCalendar.MONTH)+1; //+1 perché GregorianCalendar parte da 0 a contare i mesi
int giorno = gc.get(GregorianCalendar.DATE);
int nuovoGiorno = 0;
Random aRandom = new Random();
//numero casuale da 1 a 31
long range = 31;
long fraction = (long)(range * aRandom.nextDouble());
nuovoGiorno = (int)(fraction + 1);
//se il mese è da 30 giorni e il numero generato è 31
if (mese == 4 || mese == 6 || mese == 9 || mese == 11 && nuovoGiorno > 30) {
mese = mese + 1; //passo al mese seguente
nuovoGiorno = 1; //imposto il giorno come primo del mese
}
//se il mese è febbraio e il numero casuale è > di 28
else if (mese == 2 && nuovoGiorno > 28) {
mese = mese + 1; //passo al mese seguente
nuovoGiorno = 1; //imposto il giorno come primo del mese
}
//se nuovoGiorno è precedente al giorno attuale
if (nuovoGiorno <= giorno)
mese++; //porto avanti il mese di scadenza di 1
//se il nuovo mese risulta essere 13 ovvero un numero non valido
if (mese == 13) {
mese = 1; //passo a Gennaio
anno++; //passo all'anno seguente
}
if (mese < 10 && nuovoGiorno < 10)
data = anno+"-0"+mese+"-0"+nuovoGiorno;
else if (mese < 10 && giorno >= 10)
data = anno+"-0"+mese+"-"+nuovoGiorno;
else if (mese >= 10 && nuovoGiorno < 10)
data = anno+"-"+mese+"-0"+nuovoGiorno;
else
data = anno+"-"+mese+"-"+giorno;
return data;
}
Ultima modifica di Alhazred : 26-07-2008 alle 00:02. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:46.


















