MySQL数据库中的时间戳数据类型存储日,月,年,小时,分钟,秒,小数秒。使用此功能,您可以一次表示日期和时间。
使用JDBC时,有两种插入/获取当前时间戳值的方法。
使用数据库默认值作为日期。
使用日历类的getTime()方法。
使用以下查询创建一个名为sample的表以将时间戳存储在MySQL数据库中:
CREATE TABLE Sample(Id INT, Current_Time_Stamp TimeStamp);
现在描述如下表:
+--------------------+-----------+------+-----+-------------------+ | Field | Type | Null | Key | Default | +--------------------+-----------+------+-----+-------------------+ | Id | int(11) | YES | | NULL | | Current_Time_Stamp | timestamp | NO | | CURRENT_TIMESTAMP | +--------------------+-----------+------+-----+-------------------+
如果您观察到,则时间戳的默认值是系统的当前时间戳。即,如果默认情况下您不将任何值传递给此列,则它将使用当前时间戳记值填充。
因此,在使用JDBC程序将值插入具有时间戳的表中时,在Prepared语句中留下时间戳列,或者只是使用CURRENT_TIMESTAMP而不是占位符?这将用当前时间戳值填充。
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; public class InsertingCurrentTime { public static void main(String args[])throws Exception { //获得连接 String mysqlUrl = "jdbc:mysql://localhost/sampleDB"; Connection con = DriverManager.getConnection(mysqlUrl, "root", "password"); System.out.println("Connection established......"); //将值插入表 String query = "INSERT INTO sample(ID, Current_Time_Stamp) VALUES (?, CURRENT_TIMESTAMP)"; PreparedStatement pstmt = con.prepareStatement(query); pstmt.setInt(1, 1); pstmt.execute(); System.out.println("Data inserted......"); } }
Data inserted......
如果您观察该表的内容,则可以将其与当前时间戳记值一起看到,如下所示:
+------+---------------------+ | Id | Current_Time_Stamp | +------+---------------------+ | 1 | 2019-02-27 17:18:17 | +------+---------------------+
getTime()
Calendar类的方法Calendar类的getTime()方法返回Date类的Object,该对象保存日历的当前时间值。
Calendar calendar = Calendar.getInstance(); java.util.Date currentTime = calendar.getTime();
java.util.Date类还提供了一个名为方法的getTime()此方法返回类型长的一个变量,它表示从标准信号出现时间的毫秒数(自1970年1月1日,00:00:00 GMT)到该对象的当前时间值。
long time = currentTime.getTime();
现在,将此获得的当前时间值作为一个参数传递给setTimedtamp()方法,其中另一个将是代表占位符?的参数索引的整数。您需要将其设置为当前时间戳值。
pstmt.setTimestamp(2, new Timestamp(time));