Computer >> Máy Tính >  >> Lập trình >> Java

Làm cách nào để đặt ngày / giờ cục bộ trong bảng bằng cách sử dụng lớp LocalDateTime trong Java?

java.time gói của Java8 cung cấp một lớp có tên LocalDateTime được sử dụng để lấy giá trị hiện tại của ngày và giờ cục bộ. Sử dụng điều này ngoài các giá trị ngày và giờ, bạn cũng có thể nhận được các trường ngày và giờ khác, chẳng hạn như ngày trong năm, ngày trong tuần và tuần trong năm.

Đặt Giờ địa phương thành một cột

Để đặt giá trị ngày và giờ cục bộ thành một cột trong bảng -

  • Lấy đối tượng LocalDateTime - Bạn có thể lấy LocalDateTime đối tượng bằng cách gọi phương thức static now () as -
//Getting the LocalDateTime object
LocalDateTime localDateTime = LocalDateTime.now();
  • Nhận LocalDate LocalTime các đối tượng từ trên đã thu được LocalDateTime như -
LocalDate localDate = localDateTime.toLocalDate();
LocalTime localTime = localDateTime.toLocalTime()
  • Bây giờ, hãy vượt qua LocalDate LocalTime đối tượng của valueOf () phương thức của java.sql.Date java.sql.Time các lớp tương ứng như−
java.sql.Date date = java.sql.Date.valueOf(localDate);
java.sql.Time time = java.sql.Time.valueOf(localTime);

Ví dụ

Hãy để chúng tôi tạo một bảng có tên công văn trong cơ sở dữ liệu MySQL bằng cách sử dụng câu lệnh CREATE như sau -

CREATE TABLE dispatches(
   ProductName VARCHAR(255),
   CustomerName VARCHAR(255),
   DispatchDate date,
   DeliveryTime time,
   Price INT,
   Location VARCHAR(255)
);

Bây giờ, chúng tôi sẽ chèn 5 bản ghi trong công văn bảng sử dụng câu lệnh INSERT -

insert into dispatches values('Key-Board', 'Raja', DATE('2019-09-01'), TIME('11:00:00'), 7000, 'Hyderabad');
insert into dispatches values('Earphones', 'Roja', DATE('2019-05-01'), TIME('11:00:00'), 2000, 'Vishakhapatnam');
insert into dispatches values('Mouse', 'Puja', DATE('2019-03-01'), TIME('10:59:59'), 3000, 'Vijayawada');
insert into dispatches values('Mobile', 'Vanaja', DATE('2019-03-01'), TIME('10:10:52'), 9000, 'Chennai');
insert into dispatches values('Headset', 'Jalaja', DATE('2019-04-06'), TIME('11:08:59'), 6000, 'Goa');

Chương trình JDBC sau sẽ chèn một bản ghi mới vào công văn bảng bằng cách chuyển các giá trị cần thiết. Tại đây, chúng tôi đang nhận các giá trị ngày và giờ cục bộ hiện tại và chèn chúng dưới dạng giá trị của các cột Ngày và Giờ của bảng.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.time.LocalDateTime;
public class settingLocatDate {
   public static void main(String args[]) throws SQLException {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/mydatabase";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Getting the LocalDateTime object
      LocalDateTime localDateTime = LocalDateTime.now();
      System.out.println(localDateTime.toString());
      //Converting date and time values from local to SQL
      java.sql.Date date = java.sql.Date.valueOf(localDateTime.toLocalDate());
      java.sql.Time time = java.sql.Time.valueOf(localDateTime.toLocalTime());
      //Creating a Prepared Statement
      String query = "INSERT INTO Dispatches VALUES (?, ?, ?, ?, ?, ?)";
      PreparedStatement pstmt = con.prepareStatement(query);
      pstmt.setString(1, "Watch");
      pstmt.setString(2, "Rajan");
      pstmt.setDate(3, date);
      pstmt.setObject(4, time);
      pstmt.setInt(5, 4000);
      pstmt.setString(6, "Chennai");
      pstmt.execute();
      System.out.println("Rows inserted ....");
      //Retrieving values
      Statement stmt = con.createStatement();
      ResultSet rs = stmt.executeQuery("select * from dispatches");
      while(rs.next()) {
         System.out.println("Product Name: "+rs.getString("ProductName"));
         System.out.println("Customer Name: "+rs.getString("CustomerName"));
         System.out.println("Date Of Dispatch: "+rs.getDate("DispatchDate"));
         System.out.println("Delivery Time: "+rs.getTime("DeliveryTime"));
         System.out.println("Location: "+rs.getString("Location"));
         System.out.println();
      }
   }
}

Đầu ra

Connection established......
2019-05-14T15:48:42.457
Rows inserted ....
Product Name: Key-Board
Customer Name: Raja
Date Of Dispatch: 2019-09-01
Delivery Time: 11:00:00
Location: Hyderabad
Product Name: Earphones
Customer Name: Roja
Date Of Dispatch: 2019-05-01
Delivery Time: 11:00:00
Location: Vishakhapatnam
Product Name: Mouse
Customer Name: Puja
Date Of Dispatch: 2019-03-01
Delivery Time: 10:59:59
Location: Vijayawada
Product Name: Mobile
Customer Name: Vanaja
Date Of Dispatch: 2019-03-01
Delivery Time: 10:10:52
Location: Chennai
Product Name: Headset
Customer Name: Jalaja
Date Of Dispatch: 2019-04-06
Delivery Time: 11:08:59
Location: Goa
Product Name: Watch
Customer Name: Rajan
Date Of Dispatch: 2019-05-14
Delivery Time: 15:48:42
Location: Chennai