mysql timestamp比較查詢
導讀 | 這篇文章主要介紹了mysql timestamp比較查詢遇到的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教 |
記得之前京東要求mysql建表的時候update_time 為timestamp,create_time為datetime。後來阿里的編碼規範裡要求兩者都要是datetime型別的。
對於timestamp和datetime的區別好多地方都有介紹。有時在想為什麼京東會要求update_time必須timestamp呢?難道是因為佔用的空間少點?還是隻有timestamp才能設定預設值(on update current_timestamp)?預設值datetime不是也可以設定麼。後來百度了下,才知道 datetime支援設定預設值是在5.7的時候才支援的。京東這麼要求可能之前使用的mysql版本過低,同時要求update_time 能自動更新的緣故吧。
現在在一家公司也是這麼要求的 ,update_time設定為timestamp。結果遇到坑了。一同事發現很奇怪的問題:為什麼date比較查詢沒有結果,而把日誌裡面列印的sql直接執行卻能查詢到結果??為什麼會出現這種不一致的情況,我之前也沒遇到過。解決問題嘛,總是讓人興奮的。
自己在本地試了下,確實是這樣的,列印的日誌沒有問題,而正是日誌‘迷惑'了我們,讓人覺得很奇怪。看了下比較的欄位 是 update_time, 正是timestamp型別的。經過阿里規範薰陶過,敏銳的覺得應該是型別的問題。所以自己百度了下發現是時區的問題。在資料庫連線url後面加上serverTimezone=GMT%2B8 引數就行了。當然另一種方式就用datetime,這樣能避免很多坑。
為什麼會出現這樣的問題?是因為應用伺服器和mysql部署的伺服器時區不一致導致的。這就是為什麼我們看到的列印日誌沒有問題,但是卻查詢不到結果的原因(日誌中看到的時間是本機的時區,但是當資料傳輸到mysql伺服器時,是另一個時區的時間)
mysql 的date 也有這個問題。。。
MySQL中timestamp型別日期,比如更新時間是2020-05-26,查詢是時 update_time <= 2020-05-26,是查詢不到的,需要轉為 DATE_FORMAT(info.up_time,'%Y-%m-%d') <= '2020-05-26',具體原因不明,需要深入研究。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2847360/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql資料庫時間型別datetime、bigint、timestamp的查詢效率比較MySql資料庫型別
- KImysql timestamp比較查詢遇到的坑及解決ehsMySql
- Mysql中的Datetime和Timestamp比較MySql
- MySQL 的 timestamp 和 datetime 型別比較MySql型別
- Mysql日期(DATE, TIME, DATETIME, TIMESTAMP)型別的比較MySql型別
- 探討一個比較複雜的查詢
- 比較爽的導航查詢 功能 - SqlSugar ORMSqlSugarORM
- BST查詢結構與折半查詢方法的實現與實驗比較
- WEBAPI單據查詢介面提示比較符67錯誤WebAPI
- 同一張表的兩個欄位比較查詢
- MySQL中MyISAM為什麼比InnoDB查詢快MySql
- MySQL查詢MySql
- MySQL:MySQL層比較函式呼叫MySql函式
- Spring Boot虛擬執行緒與Webflux在JWT驗證和MySQL查詢上的效能比較Spring Boot執行緒WebUXJWTMySql
- 報表連 hive,資料量比較大,怎麼分頁查詢?Hive
- MySQL: datetime vs timestampMySql
- MySQL - 資料查詢 - 簡單查詢MySql
- mysql查詢模型MySql模型
- MYsql 子查詢MySql
- 【MySQL】多表查詢MySql
- mysql多表查詢MySql
- MySQL子查詢MySql
- MySQL慢查詢MySql
- MySQL 多表查詢MySql
- mysql 模糊查詢MySql
- MySQL 慢查詢MySql
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- PostgreSQL與MySQL的比較 - hackrMySql
- 使用perl比較mysql的版本MySql
- MySQL 中 MyISAM 中的查詢為什麼比 InnoDB 快?MySql
- mysql查詢結果多列拼接查詢MySql
- MySQL之連線查詢和子查詢MySql
- mysql查詢語句5:連線查詢MySql
- MYSQL學習筆記25: 多表查詢(子查詢)[標量子查詢,列子查詢]MySql筆記
- Mysql日期查詢listMySql
- mysql查詢語句MySql
- MYSQL查詢資料MySql
- mysql條件查詢MySql