2

Hello I'm working on my system and I'm stuck right now on how to save separably the month day and year to a separate column .. In my system I have an objective that let user print report month or daily basis , and my solution is to save the day month and year to a each separate columns.. Is this posible ? Sorry for my bad english .

  • which Database? and whats table structure? – Deepkamal May 03 '17 at 16:49
  • I use MySql , I have a table name Logs .. with column ID Name Date .. I want to make it ID NAME MONTH YEAR DAY . is it possible ? – kaisar Great May 03 '17 at 16:54
  • @kaisarGreat Please edit your Question to provide detail and clarification rather than posting as a Comment. And no need to apologize for your English as we all know Stack Overflow is used around the world – and your English is quite good (better than the English of many Americans!). – Basil Bourque May 03 '17 at 18:19
  • Is it possible? Yes. However, this greatly depends on what your actual requirements mandate. Are you saying that they need a different *type* to store based on month or day, or are you saying you absolutely need to represent a date as either a month, a day, or both? – Makoto May 03 '17 at 22:01

3 Answers3

2

For example, you can take system date as String, as it can be seen from this resource: 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() ;

Later you can use split to divide string for needed values (Year, month of day), for example, like here: How to split a String by space

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

In the last example instead "-", maybe, you need to use ASCII code of "-". Alas, I forget this

Community
  • 1
  • 1
Vasyl Lyashkevych
  • 1,920
  • 2
  • 23
  • 38
2

You can use the LocalDate from JDK 8 Date-Time API as below to get year, month and day and persist them 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();
Pallavi Sonal
  • 3,661
  • 1
  • 15
  • 19
  • Good answer, but I recommend always specifying the optional argument of your desired/expected time zone `ZoneId` in the call to `LocalDate.now` rather than relying implicitly on the JVM’a current default time zone that can change at any moment during runtime. – Basil Bourque May 03 '17 at 18:30
1

The other Answers are correct about using LocalDate in Java.

Database

As for the database, define your column as a date-only type such as the SQL Standard‘s type DATE.

JDBC

If your JDBC driver complies with JDBC 4.2, you can use the java.time types such as LocalDate directly.

myPreparedStmt.setObject( … , myLocalDate ) ;

And:

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

If your driver does not comply, fall back to using the java.sql types. You may convert to-and-fro by calling new methods added to the old classes. But use the java.sql types as briefly as possible, doing all the real work with java.time classes.

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

…and…

LocalDate ld = myResultSet.getDate( … ).toLocalDate() ;
Basil Bourque
  • 303,325
  • 100
  • 852
  • 1,154