I have a machine physically located in the USA, but
the OS (Linux) time is set to New Zealand time. So if
I execute "date" on the command prompt, I get the New
Zealand time.
I have java classes converting all time to timezone
"Europe/Amsterdam".
I have tables with "TIMESTAMP" fields (no timezone).
If I do this (through a JDBC call):
"UPDATE users SET last_login=current_timestamp"
then the database explorer shows the times in New
Zealand time, as expected. But my the Java classes see
the time (after converting the time to the Amsterdam
timezone) as 19 hours ahead of Amsterdam time. (19
hours is, I think, the difference between the USA and
New Zealand times?). I also tried with LOCALTIMESTAMP
instead of current_timestamp, same result.
If, however, I change the update to this:
"UPDATE users SET last_login=?"
with
prepareStatement.setTimestamp(1, new Timestamp(
System.currentTimeMillis());
Then the java classes see the time correct as it
should.
Why is this? Why does System.currentTimeMillis() and
current_time give different times?