【问题标题】:convert string date to sql date format将字符串日期转换为 sql 日期格式
【发布时间】:2022-01-13 14:29:37
【问题描述】:

我想将此字符串“2022-01-13 14:33:07.996”转换为 java sql 日期。我已阅读答案,并将字符串转换为 java util date,然后转换为 java sql date。我只是不知道如何以 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

但我想要类似 2022-01-13 14:33:07.996 的 java sql 日期格式

【问题讨论】:

  • “SQL 日期值没有时间组件”在该类的官方 javadoc 中被提及 6 次:docs.oracle.com/javase/7/docs/api/java/sql/Date.html - 这就是为什么您的第一个调试来源应该始终是查看官方文档!
  • 如果你想要一个可以存储类似2022-01-13 14:33:07.996的信息的类,我认为你不应该使用java.sql.Datejava.sql.Date 仅具有年、年中的月和月中的日作为其属性,仅此而已,没有一天中的时间,没有小时、分钟、秒或更小(如果您不相信,请阅读 a document that contains a remarkable set of the words deprecated and deprecation)。最好使用@BasilBorque 提供的解决方案之一为您提供建议。

标签: java sql string date date-formatting


【解决方案1】:

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 java sql 日期格式

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

java.time.LocalDateTime

将您的输入字符串解析为LocalDateTime,因为它缺少任何时区或偏移指示符。将中间的空格替换为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 上讨论过很多次了。搜索以了解更多信息。

【讨论】:

    猜你喜欢
    • 2017-02-14
    • 2015-07-13
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多