Czy ktoś może mi powiedzieć, jak mogę przechowywać datę Java w datetime MySQL ...?
Kiedy próbuję to zrobić ... zapisywana jest tylko data, a czas pozostaje 00:00:00 w sklepach z datą MySQL, takich jak ten ...
2009-09-22 00:00:00
Chcę nie tylko randki, ale także czasu ... lubię
2009-09-22 08:08:11
Używam JPA (Hibernate) z wiosennymi klasami mydomain używa java.util.Date, ale utworzyłem tabele za pomocą odręcznych zapytań ...
to jest moja deklaracja tworzenia
CREATE TABLE ContactUs (id BIGINT auto_increment,
userName VARCHAR(30),
email VARCHAR(50),
subject VARCHAR(100),
message VARCHAR(1024),
messageType VARCHAR(15),
contactUsTime datetime,
primary key(id))
TYPE=InnoDB;
java.util.Date
w ogóle używać (w 2010 prawdopodobnie nie było lepszego wyboru). Lepiej jest używać nowoczesnych klas, takich jakjava.time.Instant
lubjava.time.LocalDateTime
, w zależności od dokładnych wymagań dotyczących daty i godziny, którą chcesz przechowywać.Odpowiedzi:
zobacz w linku:
http://www.coderanch.com/t/304851/JDBC/java/Java-date-MySQL-date-conversion
Poniższy kod właśnie rozwiązał problem:
Ten „ currentTime ” został wstawiony do kolumny o typie DateTime i zakończyła się powodzeniem.
źródło
yyyy-MM-dd HH:mm:ss
to bardzo ważne. Zwróć uwagę na wielkie litery.Opisz swoje pole (lub getter) w
@Temporal(TemporalType.TIMESTAMP)
następujący sposób:To powinno załatwić sprawę.
źródło
Czy może używasz
java.sql.Date
? Chociaż ma on dokładność milisekundową jako klasa Java (jest to podklasajava.util.Date
złej decyzji projektowej), zostanie zinterpretowana przez sterownik JDBC jako data bez składnika czasu. Zamiast tego musisz użyćjava.sql.Timestamp
.źródło
java.sql.Date
anijava.sql.Timestamp
w klasach domeny, ale myślę, że zostało to napisane przed edycją OP.Prawdopodobnie dlatego, że Twoja data java ma inny format niż
mysql format
(YYYY-MM-DD HH:MM:SS
)Zrób to
źródło
otrzymasz 2011-07-18 + format czasu
źródło
mysql datetime -> GregorianCalendar
GregorianCalendar -> mysql datetime
źródło
źródło
Użyj poniższego kodu, aby wstawić datę do MySQL. Zamiast zmieniać format naszej daty, aby spełnić wymagania MySql, możemy pomóc bazie danych rozpoznać naszą datę, ustawiając
STR_TO_DATE(?, '%l:%i %p')
parametrów.Na przykład 2014-03-12 można przedstawić jako
STR_TO_DATE('2014-03-12', '%Y-%m-%d')
źródło
Jest to bardzo proste, chociaż warunki w tej odpowiedzi są w mysql, typ danych kolumny to datetime i chcesz wysłać dane z kodu java do mysql:
java.util.Date dt = new java.util.Date ();
whatever your code object may be
.setDateTime (dt);źródło
Właściwie nie możesz używać SimpleDateFormat, możesz użyć czegoś takiego;
W ten sposób możesz bezpośrednio pobrać datę w określonym formacie.
źródło
Nadal wolę metodę w jednej linii
źródło
mi to pasuje !!
w tabeli mysql
w jednostce:
w trakcie:
w przygotowanym oświadczeniu:
źródło