Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีสร้าง java.sql.Date Object ใน Java


คลาส java.sql.Date ใช้แทนค่าวันที่ใน JDBC (ไม่มีส่วนเวลา) มี 2 วิธีสร้างหลัก

วิธีที่ 1: ใช้ Constructor (รับค่า milliseconds)

public class Demo {
    public static void main(String args[]) {
        // จาก epoch milliseconds
        long epoch = 622751400000L;  // 26-09-1989
        java.sql.Date date = new java.sql.Date(epoch);
        System.out.println("Date value: " + date);
    }
}

ผลลัพธ์

Date value: 1989-09-26

โดยปกติจะแปลงจาก String → Date → getTime() → sql.Date:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.sql.Date;

public class Demo {
    public static void main(String args[]) throws ParseException {
        String str = "26-09-1989";
        SimpleDateFormat obj = new SimpleDateFormat("dd-MM-yyyy");
        long epoch = obj.parse(str).getTime();
        
        // สร้าง java.sql.Date
        Date sqlDate = new Date(epoch);
        System.out.println("Date value: " + sqlDate);
    }
}

วิธีที่ 2: ใช้ valueOf() (Java 8+) - แนะนำ

มี 2 overload:

  • valueOf(LocalDate date)
  • valueOf(String s) - รูปแบบ yyyy-[m]m-[d]d

จาก LocalDate

import java.sql.Date;
import java.time.LocalDate;

public class Demo {
    public static void main(String args[]) {
        LocalDate localDate = LocalDate.of(2014, 9, 11);
        Date date = Date.valueOf(localDate);
        System.out.println("Date Value: " + date);
    }
}

ผลลัพธ์

Date Value: 2014-09-11

จาก String (ISO format)

import java.sql.Date;

public class Demo {
    public static void main(String args[]) {
        String str = "2017-12-03";
        Date date = Date.valueOf(str);
        System.out.println("Date Value: " + date);
    }
}

ผลลัพธ์

Date Value: 2017-12-03

⚠️ ข้อควรระวัง

  • java.sql.Date extends java.util.Date แต่ normalize time component เป็น 00:00:00
  • เมธอดเวลา (getHours, getMinutes, etc.) ถูก deprecated และโยน Exception
  • ใช้สำหรับ JDBC DATE type เท่านั้น (ไม่มี TIME)
  • สำหรับ TIMESTAMP ใช้ java.sql.Timestamp

Best Practice สำหรับ JDBC

// แปลง LocalDate → sql.Date (แนะนำ)
LocalDate localDate = LocalDate.now();
java.sql.Date sqlDate = java.sql.Date.valueOf(localDate);

// PreparedStatement
preparedStatement.setDate(1, sqlDate);