mysql timestamp毫秒_MySQL的Timestamp插入丢失毫秒的问题
昨天寫項目的時候,因為加密的時候涉及到了數據庫的一個timestamp類型的字段,寫到后面發現生成的密文和接收到的密文死活對不上,唉。
今天吃完午飯看了看,寫了個測試方法,
@Test
public void testAddUser() throws Exception {
User user = new User();
user.setAppOpenid("openId1");
user.setSessionKey("sessionKey");
user.setName("我是nic發kName");
user.setNameSearch(SearchUtils.getSearchText("我是nic發kName"));
user.setWeixinNickname("nickName");
user.setSex(1);
user.setAddress("江蘇省南京市江寧區");
Date date = new Date();
Timestamp ts = new Timestamp(date.getTime());
user.setCreateTime(ts);
user.setHeaderTimestamp(date.getTime() / 1000);
// 隨機生成鹽值
int salt = LoginUtils.getSalt();
user.setSalt(salt);
user.setLastTime(ts);
int nums = userDao.addUser(user);
logger.info("nums = " + nums);
Map map = userDao.selectSaltAndLastTime(user.getuId());
System.out.println("map = " + map);
System.out.println("ts = " + ts);
System.out.println("map.last_time = " + map.get("last_time"));
}
上面的方法主要是先把當前時間轉換成java.sql.Timestamp類型,然后插入一條記錄,接著獲取剛剛插入的記錄,發現從數據庫查詢出來的last_time和當前時間竟然對不上。難怪密文一直對不上。
map = {salt=1870360469, last_time=2018-12-02 14:39:32}
ts = 2018-12-02 14:39:32.91
map.last_time = 2018-12-02 14:39:32
看看打印出來的sql語句,發現往數據庫插入的時候還是有毫秒數的。
16.png
看看數據庫,發現毫秒數沒了。再看看數據庫的表字段屬性,發現timestamp的長度設置為0。問題就出在這了,只需要把timestamp字段的長度設置為3,就可以保存毫秒數了。
總結
以上是生活随笔為你收集整理的mysql timestamp毫秒_MySQL的Timestamp插入丢失毫秒的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WGCNA:(加权共表达网络分析)
- 下一篇: mysql 临时表联表查询_一、MySQ