Je dois obtenir un fichier Java.sql.date au format suivant: "MM-jj-aaaa", mais il me faut un fichier Java.sql.date pour pouvoir le placer dans une table en tant que date. Donc, il ne peut pas s'agir d'une chaîne après la mise en forme, elle doit se transformer en objet Java.sql.date.
C'est ce que j'ai essayé jusqu'à présent:
Java.util.Date
today=new Date();
String date = formatter.format(today);
Date todaydate = formatter.parse(date);
Java.sql.Date fromdate = new Java.sql.Date(todaydate.getTime());
Java.sql.Date todate=new Java.sql.Date(todaydate.getTime());
String tempfromdate=formatter.format(fromdate);
String temptodate=formatter.format(todate);
Java.sql.Date fromdate1=(Java.sql.Date) formatter.parse(tempfromdate);
Java.sql.Date todate1=(Java.sql.Date) formatter.parse(temptodate);
Vous pouvez le faire de la même manière que Java.util.Date
(puisque Java.sql.Date
est une sous-classe de Java.util.Date
) avec un SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat(
"MM-dd-yyyy");
int year = 2014;
int month = 10;
int day = 31;
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1); // <-- months start
// at 0.
cal.set(Calendar.DAY_OF_MONTH, day);
Java.sql.Date date = new Java.sql.Date(cal.getTimeInMillis());
System.out.println(sdf.format(date));
La sortie est la valeur attendue
10-31-2014
Utilisez ci-dessous le code que j'ai converti la date du jour. apprendre et essayer avec votre code
Date today = new Date();
//If you print Date, you will get un formatted output
System.out.println("Today is : " + today);
//formatting date in Java using SimpleDateFormat
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("MM-dd-yyyy");
String date = DATE_FORMAT.format(today);
System.out.println("Today in MM-dd-yyyy format : " + date);
Date date1 = formatter.parse(date);
System.out.println(date1);
System.out.println(formatter.format(date1));
Une solution plus simple consisterait simplement à convertir la date de la requête en Epoch avant de comparer.
SELECT date_column from YourTable where UNIX_TIMESTAMP(date_column) > ?;
Ensuite, passez simplement date.getTime()
lors de la liaison de la valeur à ?
.
NOTE: La fonction UNIX_TIMESTAMP
est pour MySQL. Vous trouverez également ces fonctions pour d'autres bases de données.
Java.util.Date today=new Date();
Java.sql.Date date=new Java.sql.Date(today.getTime()); //your SQL date object
SimpleDateFormat simpDate = new SimpleDateFormat("MM-dd-yyyy");
System.out.println(simpDate.format(date)); //output String in MM-dd-yyyy
Notez que peu importe que votre date soit au format mm-jj-aaaa ou dans tout autre format, lorsque vous comparez une date (Java.sql.Date ou Java.util.Date), elles seront toujours comparées sous la forme des dates représenter. Le format de la date est simplement un moyen de régler ou d’obtenir la date au format souhaité.
Pour tous ceux qui lisent ceci en 2017 ou plus tard, la solution moderne utilise LocalDate
à partir de Java.time
, l'API de date et heure moderne de Java, au lieu de Java.sql.Date
. Ce dernier est depuis longtemps dépassé.
Formater votre date
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd-uuuu", Locale.US);
LocalDate fromDate = LocalDate.now(ZoneId.of("Asia/Kolkata"));
String tempFromDate = fromDate.format(formatter);
System.out.println(tempFromDate);
Cela imprime quelque chose comme
11-25-2017
Ne confondez pas la date avec sa représentation textuelle
Ni les objets LocalDate
ni Java.sql.Date
n’ont de format inhérent. Essayez donc - et essayez si nécessaire - de séparer les deux concepts, la date d'un côté et sa présentation à un utilisateur de l'autre.
C’est comme int
et tous les autres types de données. Un int
peut avoir une valeur de 4284. Vous pouvez le formater en 4 284 ou 4 284, 004284 ou même en représentation hexadécimale. Cela ne modifie en rien la int
elle-même. De la même manière, le formatage de votre date n'affecte pas votre objet de date. Utilisez donc la chaîne pour la présentation à l'utilisateur et utilisez la variable LocalDate
pour la stocker dans votre base de données (un pilote JDBC moderne ou un autre moyen moderne d'accès à la base de données sera ravi de le faire, par exemple via PreparedStatement.setObject()
).
Utiliser un fuseau horaire explicite
Obtenir la date du jour est une opération sensible aux fuseaux horaires, car ce n'est pas la même date dans tous les fuseaux horaires du monde. Je vous recommande fortement de rendre ce fait explicite dans le code. Dans mon extrait de code, j'ai utilisé le fuseau horaire Asie/Kolkata, veuillez indiquer votre fuseau horaire. Vous pouvez utiliser ZoneId.systemDefault()
pour le paramètre de fuseau horaire de votre machine virtuelle, mais sachez que ce paramètre peut être modifié sous nos pieds par d’autres parties de votre programme ou par d’autres programmes exécutés sur la même machine virtuelle, ce qui le rend fragile.
Le formatter.parse
ne vous donnera qu'un Java.util.Date
pas un Java.sql.Date
une fois que vous avez un Java.util.Date
, vous pouvez le convertir en Java.sql.Date
en faisant
Java.sql.Date sqlDate = new Java.sql.Date (normalDate.getTime ());
Notez également que no dates ont un format intégré, c’est en réalité une classe construite sur un nombre.