62,614
社区成员
发帖
与我相关
我的任务
分享
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class TestSql {
public static void main(String[] args) {
try {
Class.forName("org.postgresql.Driver");
Connection conn = DriverManager.getConnection(
"jdbc:postgresql://192.168.233.11:5432/test","test","test");
PreparedStatement pstmt = conn.prepareStatement("insert into test.table_a(name, time_str) values(?,?)");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dateTime = sdf.parse("2012-10-29 11:00:00");
Timestamp ts = new Timestamp(dateTime.getTime());
// Test1
pstmt.setString(1, "test1");
pstmt.setTimestamp(2, ts);
pstmt.executeUpdate();
// Test2 wich Calendar
TimeZone tz = TimeZone.getTimeZone("gmt");
Calendar calendar = Calendar.getInstance(tz);
pstmt.setString(1, "test2");
pstmt.setTimestamp(2, ts, calendar);
pstmt.executeUpdate();
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
}
name | time_str
-------+--------------------------------------
test1 | 2012-10-29 11:00:00.000000 +08:00:00
test2 | 2012-10-29 03:00:00.000000 +00:00:00
setTimestamp
void setTimestamp(int parameterIndex,
Timestamp x,
Calendar cal)
throws SQLException使用给定的 Calendar 对象将指定参数设置为给定 java.sql.Timestamp 值。驱动程序使用 Calendar 对象构造一个 SQL TIMESTAMP 值,该值随后被驱动程序发送给数据库。利用 Calendar 对象,驱动程序可以在考虑自定义时区的情况下计算时间戳。如果没有指定任何 Calendar 对象,那么驱动程序将使用默认时区,该时区是运行应用程序的虚拟机所在的时区。
参数:
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 参数值
cal - 驱动程序将用来构造时间戳的 Calendar 对象