繁体   English   中英

将字符串日期转换为 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" )
    .toLocalDate()
)

避免遗留的日期时间类

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

仅限日期

你说:

2022-01-13 14:33:07.996 在 java sql 日期格式

这是一个矛盾。 A java.sql.Date object 表示仅日期,而不是带有时间的日期。

java.time.LocalDateTime

将您的输入字符串解析为LocalDateTime ,因为它缺少任何时区或偏移量指示符。

LocalDateTime ldt = LocalDateTime.parse( "2022-01-13 14:33:07.996" ) ;

java.time.LocalDate

提取日期部分。

LocalDate ld = ldt.toLocalDate() ;

数据库访问

写入数据库。

myPreparedStatement.setObject( … , ld ) ;

从数据库中检索。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM