Дата Java -> в MySql Time - PullRequest
3 голосов
/ 15 мая 2011

У меня есть формат даты в Java, который мне нужно сохранить как формат времени в MySQL. Есть ли способ просто получить часть времени от даты? Я знаю Dat.gettime (), который возвращает long, но мне просто нужно время в MySql

Любые предложения ...

Спасибо всем ..

Ответы [ 6 ]

3 голосов
/ 15 мая 2011

Использование PreparedStatement вместе с java.sql.Time объектом, созданным из java.util.Date, должно работать:

java.util.Date myDate = ....
java.sql.Time theTime = new java.sql.Time(myDate.getTime());
PreparedStatement pstmt = ...
pstmt.setTime(1, theTime);
0 голосов
/ 02 сентября 2017

При обмене данными с базой данных используйте соответствующие типы дат и объекты.Не используйте простые строки или целые числа вместо допустимых типов / классов.

java.time

Современный подход использует классы java.time драйвером JDBC , соответствующим JDBC 4.2 или новее, вы можете опустить использование java.sql.Time класса и просто использовать java.time.LocalTime напрямую.

Унаследованный класс java.util.Date представляет дату и время в UTC .Преобразуйте в современный класс java.time (Instant), назначьте часовой пояс, в котором вы хотите просмотреть значение, и извлеките время суток.

Чтобы преобразовать, вызовите новые методы, добавленные к старым унаследованным классам.

Instant instant = myJavaUtilDate.toInstant() ;

Назначьте часовой пояс.

Часовой пояс критический ,В любой момент времени дата меняется по всему земному шару в зависимости от зоны.Например, через несколько минут после полуночи в Париж Франция - это новый день, в то время как "вчера" в Монреаль Квебек .

Укажите надлежащий часовой поясимя в формате continent/region, например 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 ) ;
0 голосов
/ 25 декабря 2013

Получить дату + время 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);
0 голосов
/ 24 января 2013

В зависимости от драйвера JDBC, он может пропускать временную часть даты, лучше использовать java.sql.Timestamp.

java.sql.Timestamp mysqlDate = new java.sql.Timestamp( javaDate.getTime() );
0 голосов
/ 15 мая 2011

Вы можете использовать SimpleDateFormat для форматирования полей времени вашей даты:

SimpleDateFormat sdf =  new SimpleDateFormat("HH:mm:ss" );
String time = sdf.format (  yourDate  );
0 голосов
/ 15 мая 2011

Используйте java.sql.Date для построения даты SQL.

long d = date.getTime();
java.sql.Date sqlDate = new java.sql.Date(d);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...