鍍金池/ 問答/PHP  數據庫/ 簽到功能,數據庫存時間年月日為什么用varchar

簽到功能,數據庫存時間年月日為什么用varchar

做一個簽到功能

`create_time` decimal(20,3) NOT NULL,
  `create_date_ymd` varchar(15) NOT NULL COMMENT '簽到時間年月日',
  `create_date_ym` varchar(15) NOT NULL,
  `create_date_y` int(4) NOT NULL,
  `create_date_m` int(2) NOT NULL,
  `create_date_d` int(2) NOT NULL,

不是很明白年月日create_date_ymd 這個字段為什么是varchar而不是int
后面這些字段用處是:之后清理沒用的數據

回答
編輯回答
枕頭人

中間沒符號的話,你完全可以使用int

2017年12月4日 04:06
編輯回答
亮瞎她

也可以存Date類型,但是varchar類型前后臺轉換都方便.

2017年10月7日 09:22
編輯回答
鹿惑

習慣問題吧,我個人是覺得int或者date 是更好的

2017年6月5日 03:52
編輯回答
不討喜

習慣問題,我是int或者datetime

2017年5月4日 14:52
編輯回答
別硬撐

后來實在不解就問了表設計者,當查詢某一天的數據,可以直接用create_date_ymd = '2018-03-27',這樣速度快。

2017年2月26日 14:42
編輯回答
哚蕾咪

如果前端顯示方式與后端對等的話,使用varchar并沒有什么問題。
但是目前而言,一般的做法是,使用datetime或者timestamp來保存date數據。
這樣,無論前端顯示的是Y/M/D、Y-M-D還是Y年M月D日,后端都可以很方便的轉換(因為保存的數據不綁定格式)。
但是這樣做的話,上面的create_time就沒什么意義了,因為date和timestamp的精度是可以去到秒的,也可以推算回日期時間。
所以,我想,create_time后面的字段可能是后來出現某需求而增加的?

2017年4月20日 21:00
編輯回答
礙你眼

字段名create_date_ymd ymd不是指時間格式嗎?有格式的時間是int的話再轉一次?其實我覺得存date類型好點

2018年6月11日 13:23
編輯回答
款爺

能用就行了~~

2017年5月22日 10:27
編輯回答
忠妾

這個就看創(chuàng)建數據表人的習慣了,看這個表就知道喜歡使用varchat 不怎么喜歡使用date類型

2018年5月21日 09:00
編輯回答
淺淺

這屬于個人習慣問題吧 我一般存bigint 存到微秒

2018年5月9日 08:32