将字符串日期转换为 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 上讨论过很多次了。搜索以了解更多信息。
我想将此字符串“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 上讨论过很多次了。搜索以了解更多信息。