package datetimetest;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.time.LocalDateTime;
import java.util.TimeZone;

public class DateTimeTest {

    public static void main(String[] args) throws Exception {
	TimeZone.setDefault(TimeZone.getTimeZone("Europe/Vienna")); // JVM timezone
	final String connUrl = "jdbc:mariadb://localhost:3306/test";
	try (Connection conn = DriverManager.getConnection(connUrl, "root", "passwd")) {
	    System.out.println(conn.getMetaData().getDriverVersion());
	    Statement st = conn.createStatement();
	    st.execute("drop table if exists datetimetest");
	    st.execute("create table datetimetest (id int, dt datetime)");

	    final LocalDateTime ldtSent = LocalDateTime.of(2024, 3, 31, 2, 45, 0);
	    System.out.printf("LocalDateTime sent: %s%n", ldtSent.toString());

	    PreparedStatement ps = conn.prepareStatement("INSERT INTO datetimetest (id, dt) VALUES (?,?)");
	    ps.setInt(1, 1);
	    ps.setObject(2, ldtSent);
	    ps.executeUpdate();

	    ResultSet rs = st.executeQuery("SELECT dt FROM datetimetest WHERE id=1");
	    rs.next();
	    final LocalDateTime ldtRcvd = rs.getObject(1, LocalDateTime.class);
	    System.out.printf("LocalDateTime rcvd: %s%n", ldtRcvd.toString());
	} catch (Throwable ex) {
	    ex.printStackTrace(System.err);
	}
    }
}
