我在java中有一个日期格式,我需要在MySQL中保存为时间格式。有没有办法从日期获得时间部分?我知道Dat.gettime()返回一个长,但我只需要在MySQLJava日期 - >到MySql时间
任何建议...
THX所有的时间..
我在java中有一个日期格式,我需要在MySQL中保存为时间格式。有没有办法从日期获得时间部分?我知道Dat.gettime()返回一个长,但我只需要在MySQLJava日期 - >到MySql时间
任何建议...
THX所有的时间..
一起使用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);
正确的答案,但需要注意几个问题:(A)这将产生一个时间的日在[UTC](https://开头的连接。 wikipedia.org/wiki/Coordinated_Universal_Time)而不是[特定时区](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones),这可能是也可能不是你想要的。 (B)['java.sql.Time'](http://docs.oracle.com/javase/8/docs/api/java/sql/Time.html)类现在是遗留的,代之以['' java.time.LocalTime'](https://docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html)自[JDBC 4.2]开始的类(https://jcp.org/ aboutJava/communityprocess/mrel/jsr221/index2.html)和更高版本。 – 2017-09-02 19:06:33
使用java.sql.Date建设SQL日期。
long d = date.getTime();
java.sql.Date sqlDate = new java.sql.Date(d);
你可以使用的SimpleDateFormat格式化您的日期时间字段:
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类。使用符合JDBC 4.2或更高版本的JDBC driver,您可以省略使用java.sql.Time
类,并直接使用java.time.LocalTime
。
传统类java.util.Date
表示UTC中的日期和时间。转换为现代java.time类(Instant
),指定要查看该值的时区,并提取时间。
要转换,请调用添加到旧旧类的新方法。
Instant instant = myJavaUtilDate.toInstant() ;
指定时区。
该时区为至关重要。对于任何特定的时刻,日期因地区而异。例如,Paris France午夜后几分钟是新的一天,而在Montréal Québec仍然是“昨天”。
在continent/region
的格式指定一个proper time zone name,如America/Montreal
,Africa/Casablanca
,或Pacific/Auckland
。切勿使用3-4字母缩写,如EST
或IST
,因为它们是而不是真正的时区,不是标准化的,甚至不是唯一的(!)。
ZoneId z = ZoneId.of("America/Montreal") ; // Or "Asia/Kolkata", or "Pacific/Auckland", etc.
ZonedDateTime zdt = instant.atZone(z) ;
提取没有日期的时间。
LocalTime lt = zdt.toLocalTime() ;
传递到您的PreparedStatement
致电setObject
。
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() ;
以类似的方式获取数据,调用ResultSet::getObject
。
LocalTime lt = myResultSet.getObject(… , LocalTime.class) ;
http://stackoverflow.com/q/2400955/248903 – Ascherer 2011-05-15 11:28:14