不想看廢話的直接點到3.0版本
目錄
1.datetime格式無法設置timestamp解決辦法:
mysql時間戳轉換爲字符串類型
mysql是5.6版本
表結構如下,表名爲msgBoard,其中date列是時間列,列類型是timestamp,默認值爲當前時間,java中的對應類的date屬性爲String類型
我希望取出msgBoard表中的數據顯示到前端頁面,此時遇到了問題。
1.0版本的sql語句:
select id,author,msg,date from msgBoard
毫無疑問,這條語句在mysql中運行絕無問題,但我將其拷貝到java程序中運行,報錯如下:
java.lang.IllegalArgumentException: Can not set java.lang.String field org.lanqiao.msg.entity.msgBoard.date to java.sql.Timestamp
意思是timestamp無法存到String類型的變量中
我... fine.小問題,百度一下mysql時間戳轉換字符串的函數就可以了
於是有了sql2.0版本:
select id,author,msg,DATE_FORMAT(date, '%Y-%m-%d %T') from msgBoard
毫無疑問,這個語句放在mysql運行也是沒毛病。但我運行java程序的時候,還是報錯了,報錯如下:
java.lang.NoSuchFieldException: DATE_FORMAT(date, '%Y-%m-%d %T')
java告訴我它找不到這個屬性。
我這個小白實在無法揣測程序的心思。
這個問題於是從下午開始就困擾到晚上都沒解決。幾乎放棄。期間把我的mysql5.5卸載了重裝成了5.6還是不行,要是再解決不了我可能原地爆炸。
BUT
萬能的百度啊!感謝博主大大們!!!
博文鏈接:https://blog.csdn.net/qq_37707251/article/details/83093832 根據這個博主的講解,誕生了
sql3.0版本
也就是說,時間戳的轉換你需要包裝一下,用as給他命別名爲原來表中的那個列的名字,這樣才能找
比如這裏,我的列名字是date,那使用函數date_format(date, '%Y-%m-%d %T')之後還要命別名爲date
select id,author,msg,date_format(date, '%Y-%m-%d %T') AS date from msgBoard
成果:
完結撒花。以上,全是廢話嘻嘻。
另:
MySQl的一些零碎知識點
1.datetime格式無法設置timestamp解決辦法:
設計表的時候不用填寫default,直接在查詢界面用sql語句添加約束:
alter table msgBoard
MODIFY column date datetime default CURRENT_TIMESTAMP COMMENT '創建時間'
這樣就行。但是事實證明,取不出來時間就是sql語句的問題,和那個timestamp沒關係,可憐它被我罵了一下午,我一直以爲是這個的問題。
2.主鍵自增
mysql設置id列自增
alter table msgBoard modify column id int not null auto_increment ;
問題來了,設置完自增後,一直添加自然沒問題, 但如果中間刪除了數據,id列就不是連續的了,這樣很不開心。雖然我現在不知道怎麼設置自動改成連續,但可以手動改呀嘻嘻,所以:
mysql設置id列從某個指定值開始自增
alter table msgboard auto_increment=8
3.mysql分頁查詢
select * from TABLE limit pageNum,pageSize
撒花!!!