Java日期->;到MySql时间

Java日期->;到MySql时间,java,mysql,jdbc,Java,Mysql,Jdbc,我在java中有一个日期格式,我需要将它保存为MySQL中的时间格式。有没有办法从约会中得到时间部分?我知道Dat.gettime()返回long,但我只需要MySql中的时间 任何建议 Thx all..使用java.sql.Date构建sql日期 long d = date.getTime(); java.sql.Date sqlDate = new java.sql.Date(d); 将PreparedStatement与从java.util.Date创建的java.sql.Time对象

我在java中有一个日期格式,我需要将它保存为MySQL中的时间格式。有没有办法从约会中得到时间部分?我知道Dat.gettime()返回long,但我只需要MySql中的时间

任何建议


Thx all..

使用java.sql.Date构建sql日期

long d = date.getTime();
java.sql.Date sqlDate = new java.sql.Date(d);

将PreparedStatement与从
java.util.Date
创建的
java.sql.Time
对象一起使用应该可以:

java.util.Date myDate = ....
java.sql.Time theTime = new java.sql.Time(myDate.getTime());
PreparedStatement pstmt = ...
pstmt.setTime(1, theTime);

您可以使用SimpleDataFormat格式化日期的时间字段:

SimpleDateFormat sdf =  new SimpleDateFormat("HH:mm:ss" );
String time = sdf.format (  yourDate  );

根据JDBC驱动程序的不同,它可以省略日期的时间部分,最好使用java.sql.Timestamp

java.sql.Timestamp mysqlDate = new java.sql.Timestamp( javaDate.getTime() );
获取日期+时间Mysql

ResultSet rs=....;

Date tg = new Date(rs.getTimestamp("column datetime").getTime());
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm aaa");

String val = sdf.format(tg);

与数据库交换数据时,请使用适当的日期类型和对象。不要仅使用字符串或整数而不是合法的类型/类

java.time 现代方法使用java.time类。对于符合JDBC 4.2或更高版本的应用程序,您可以省略使用
java.sql.Time
class,直接使用
java.Time.LocalTime

legacy类表示一天中的日期和时间。转换为现代java.time类(
Instant
),指定要查看值的时区,并提取一天中的时间

若要转换,请调用添加到旧遗留类的新方法

Instant instant = myJavaUtilDate.toInstant() ;
指定一个时区

时区至关重要。在任何一个特定的时刻,世界各地的日期都因地区而异。例如,中午夜后几分钟是新的一天,而中仍然是“昨天”

大陆/地区
的格式指定,例如,或
太平洋/奥克兰
。切勿使用3-4个字母的缩写,如
EST
IST
,因为它们不是真正的时区,也不是标准化的,甚至不是唯一的(!)

提取一天中没有日期的时间

LocalTime lt = zdt.toLocalTime() ;
通过调用
setObject
传递到您的
PreparedStatement

String sql = "INSERT INTO tbl_ ( time_of_day_ ) VALUES ( ? ) ; " ;
PreparedStatement ps = conn.prepareStatement( sql ) ;
ps.setObject( 1 , lt ) ;  // Call `setObject` to pass a java.time object directly without converting into `java.sql.*` type.
int rows = ps.executeUpdate() ;
LocalTime lt = myResultSet.getObject( … , LocalTime.class ) ;
以类似的方式获取数据,调用
ResultSet::getObject

String sql = "INSERT INTO tbl_ ( time_of_day_ ) VALUES ( ? ) ; " ;
PreparedStatement ps = conn.prepareStatement( sql ) ;
ps.setObject( 1 , lt ) ;  // Call `setObject` to pass a java.time object directly without converting into `java.sql.*` type.
int rows = ps.executeUpdate() ;
LocalTime lt = myResultSet.getObject( … , LocalTime.class ) ;

回答正确,但有几点需要注意:(a)这会产生一天中的某个时间,而不是,这可能是你想要的,也可能不是你想要的。(B) 该类现在是遗留类,由年及以后的类取代。