在Mysql中,關於日期的格式有三種類型:Data、Datatime、Timestamp
Data | Datatime | Timestamp | |
存儲數據格式 | YYYY-MM-DD | YYYY-MM-DD hh:mm:ss | yyyymmddhhmmss |
支持的范圍 | 1000-01-01 到 9999-12-31 | 1000-01-01 00:00:00 到 9999-12-31 23:59:59 |
1770-01-01到2037年
|
特殊說明 | 允許使用字符串或者數字來賦值。例如,12331212和‘1233-12-12’的存儲結果為:1233-12-12 | 允許使用字符串或者數字來賦值。例如,12331212121212和‘1233-12-12 12:12:12’的存儲結果都為:1233-12-12 12:12:12 | 給該類型字段賦值時,值必須大於19700101000000,否則會拋異常。 |
注意:對於datatime類型:
1、自動識別時間字符串:
當寫入其他時間字符串時,只有數據庫識別成功才能夠寫入成功,且是想要的數據;如果識別不了的時間值,會顯示為:‘000-00-00 00:00:00’
2、查詢時智能補全模式:
假設要查詢某天的全部數據,當在where條件后寫入where dt = ‘2021-12-01’時,想要查出一天的數據時。若dt的類型是date時,則可以查出;若dt的類型是datetime時或者其他類型,則無法查出。因為在MySQL中,會對時間類型進行自動補零。上面的實際語句為where dt = ‘2021-12-01 00:00:00’。
要想解決上面的問題有兩種思路:
1、在service層中對傳進來的時間進行拼接(next_day + " (一定要在這個位置加一個空格)00:00:00")
2、使用MySQL中的to_days(next_day)函數,使用between and