将字符串日期转换为 sql 日期格式

convert string date to sql date format

我想将此字符串“2022-01-13 14:33:07.996”转换为 java sql 日期。我已阅读答案,并将字符串转换为 java 实用日期,然后转换为 java sql 日期。我只是不知道如何以 java sql 日期格式

获取完整日期
String dateStart = "2022-01-13 14:33:07.996";
         DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 
         Date date1 = dateFormat.parse(dateStart);
         java.util.Date utilDate = date1;
         java.sql.Date sqlDate = new java.sql.Date(date1.getTime());
System.out.println(sqlDate);

我明白了

2022-01-13

但我想要 java sql 日期格式 2022-01-13 14:33:07.996 这样的东西

tl;博士

要将日期时间值写入数据库,请使用适当的对象,而不是文本。对于仅限日期的值,请使用 LocalDate.

myPreparedStatement
.setObject(
    … ,
    LocalDateTime
    .parse( "2022-01-13 14:33:07.996".replace( " " , "T" ) )
    .toLocalDate()
)

避免遗留日期时间类

您使用的是可怕的日期时间 类,几年前被 JSR 310 中定义的现代 java.time 类 所取代。

仅限日期

你说:

2022-01-13 14:33:07.996 in java sql date format

这是矛盾的。 java.sql.Date 对象表示仅日期,而不是带有时间的日期。

java.time.LocalDateTime

将您的输入字符串解析为 LocalDateTime,因为它缺少任何时区或偏移指示符。将中间的 SPACE 替换为 T 以符合 ISO 8601 标准。

String input = "2022-01-13 14:33:07.996".replace( " " , "T" ) ;
LocalDateTime ldt = LocalDateTime.parse( input ) ;

java.time.LocalDate

提取日期部分。

LocalDate ld = ldt.toLocalDate() ;

数据库访问

写入数据库。

myPreparedStatement.setObject( … , ld ) ;

从数据库中检索。

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

这些问题已经在 Stack Overflow 上讨论过很多次了。搜索以了解更多信息。