2017-05-03 7 views
2

Hallo Ich arbeite an meinem System und ich bin im Moment fest, wie Sie den Monat Tag und Jahr getrennt zu einer separaten Spalte speichern .. In meinem System habe ich eine Ziel, das Benutzer Bericht Monat oder Tag Basis drucken lassen, und meine Lösung ist es, den Tag Monat und Jahr auf eine separate Spalten zu speichern. Ist das möglich? Entschuldigung für mein schlechtes Englisch .Wie Monat Monat Jahr in Speichern in Datenbank zu trennen

+0

die Datenbank? und was ist die Tabellenstruktur? – user1664784

+0

Ich benutze MySql, ich habe einen Tabellenname Logs .. mit Spalten-ID Name Datum .. Ich möchte es ID NAME MONTH YEAR DAY machen. ist es möglich ? –

+0

@kaisarGreat Bitte bearbeiten Sie Ihre Frage, um Details und Erläuterungen zu liefern und nicht als Kommentar. Und wir brauchen uns nicht für Ihr Englisch zu entschuldigen, wie wir alle wissen. Stack Overflow wird auf der ganzen Welt verwendet - und Ihr Englisch ist ziemlich gut (besser als das Englisch vieler Amerikaner!). –

Antwort

2

Zum Beispiel können Sie Systemdatum als String nehmen, da es aus dieser Ressource zu sehen ist: How to convert current date into string in java?

ZoneId zoneId = ZoneId.of("America/Montreal") ; // Or ZoneOffset.UTC or ZoneId.systemDefault() 
LocalDate today = LocalDate.now(zoneId) ; 
String output = today.toString() ; 

Später können Sie Split verwenden Zeichenfolge für benötigte Werte (Jahr, Monat Tag) zu teilen zum Beispiel wie hier: How to split a String by space

str = "2017-05-03"; 
String[] splited = str.split("-"); 

im letzten Beispiel statt "-", vielleicht, müssen Sie ASCII-Code verwenden "-". Ach, ich vergesse das

+0

Sorry für spätes Update, Dieser Ansatz funktioniert gut mit mir. Danke: D –

+0

Danke, ich bin froh, nützlich zu sein –

2

Sie das LOCALDATE von JDK verwenden können 8 Date-Time API wie unten Jahr, Monat und Tag zu erhalten und bleiben sie in DB:

LocalDate date = LocalDate.now(); 
int year = date.getYear(); 
int month = date.getMonthValue(); // or Month month = date.getMonth() if you want month names 
int day = date.getDayOfMonth(); 
+0

Gute Antwort, aber ich empfehle immer das optionale Argument Ihrer gewünschten/erwarteten Zeitzone 'ZoneId' im Aufruf von' LocalDate.jetzt, anstatt sich implizit auf die JVM zu verlassen, eine aktuelle Standardzeitzone, die sich während der Laufzeit jederzeit ändern kann. –

1

Die anderen Antworten sind richtig über die Verwendung von LocalDate in Java.

Datenbank

Wie für die Datenbank definieren Sie Ihre Spalte als Datum nur für Typ wie die SQL Standard‘s typeDATE.

JDBC

Wenn Ihr JDBC driver mit JDBC 4.2 entspricht, können Sie die java.time Typen wie LocalDate direkt verwenden.

myPreparedStmt.setObject(… , myLocalDate) ; 

Und:

LocalDate ld = myResultSet.getObject(… , LocalDate.class) ; 

Wenn Ihr Treiber nicht entspricht, zurückgreifen, die java.sql Typen verwenden. Sie können hin und her konvertieren, indem Sie neue Methoden aufrufen, die zu den alten Klassen hinzugefügt wurden. Aber benutze die java.sql-Typen so kurz wie möglich, um die ganze Arbeit mit java.time-Klassen zu erledigen.

myPreparedStmt.setDate(… , java.sql.Date.valueOf(myLocalDate)) ; 

... und ...

LocalDate ld = myResultSet.getDate(…).toLocalDate() ; 
Verwandte Themen