作者KC73 (肯先生)
看板PHP
標題Re: [請益] 04跟4會不會有差?
時間Sun Sep 26 19:37:27 2010
※ 引述《ntuguy (ya)》之銘言:
: 各位大大
: 有個小問題請教
: 因為我現在在經營一個網站
: 希望他們註冊的生日格式為0000/00/00
: 請問像1995/04/01
: 跟1995/4/1
: 這在未來系統讀取資料上
: 會不會有差別
: 如果有的話
: 我可能要統一規定為1995/04/1的格式比較妥吧!
: 謝謝!!
感覺上要轉 database 板回答..如果使用的是 mysql 的話:
http://dev.mysql.com/doc/refman/5.1/en/datetime.html
10.3.1. The DATETIME, DATE, and TIMESTAMP Types
有特別說明:「The DATETIME, DATE, and TIMESTAMP types are related. This
section describes their characteristics, how they are similar, and how they
differ. 」
裡面特別舉了一個例子:'1979-6-9' is the same as '1979-06-09'。
個人感覺是,統一格式是比較好的,substr($d,5,2) 一定比 date('m',strtotime($d))
還要快。
再者,你存入資料庫的資料,一定要有習慣經過「整理」後才放進去。
例如是 datetime 的欄位,就一定要先 $d = date("Y-m-d H:i:s",strtotime($d));,
同理,int 的欄位,就要先 $i = (int) $i; 再存進去。
10.3.1.1. TIMESTAMP Properties
裡面有提到:「TIMESTAMP values are converted from the current time zone to
UTC for storage, and converted back from UTC to the current time zone for
retrieval. (This occurs only for the TIMESTAMP data type, not for other
types such as DATETIME.)」
個人感覺是,用 datetime 比較直覺。
主要在維護的時候,一眼就可以看出來時間,不過也可以兩個欄位一起使用,反正也佔
不了多少儲存空間。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.140.84
※ 編輯: KC73 來自: 118.166.140.84 (09/26 19:38)
1F:→ Kelunyang:存成unix time只要int 4byte而以ㄟXD 09/26 23:00
2F:→ KC73:一個 datetime 19 個 bytes,大概 6 到 10 個中文字。 09/27 02:53
3F:推 JoeHorn:UNIXTIMESTAMP 可能會遇到西元 2038 的問題... 09/28 02:11
4F:→ JoeHorn:不確定軟體會在何種平台運作的話,MySQL 的 DATETIME 較好 09/28 02:13
5F:→ knives:2038年,那是php的int的最大值問題吧,2038年都不知道多久 09/28 06:05
6F:→ knives:之後的事,一套系統不可能用那麼久而不更新吧 09/28 06:06
8F:→ KC73:以記錄到 292,277,026,596年12月4日15:30:08 09/28 07:16
9F:→ KC73:2038年的問題,不見得要到2038年才會遇到,例如有客戶買了30年 09/28 07:18
10F:→ KC73:的保險.所以 $expire = strtotime("+30 years"); 09/28 07:19
11F:→ KC73:然後存到 mysql 裡面,結果說不定保險公司明天就開始寄期滿的 09/28 07:20
12F:→ KC73:保險金給這個客戶. 09/28 07:20
13F:推 JoeHorn:如果 PHP 軟體是要拿去賣得,你要限制客戶用 64bit ? 09/28 19:14
14F:→ JoeHorn:還是自己處理掉 32bit 與 64bit OS 造成的差異? 09/28 19:14
15F:→ JoeHorn:KC73 大說對了,真的 28 年後才會遇到? 09/28 19:16
16F:→ JoeHorn:人無遠慮,必有近憂啊.... 09/28 19:16
17F:→ Kelunyang:聽說以後會改用float紀錄是吧,如果沒有這種「保單」的 09/28 20:36
18F:→ Kelunyang:問題,應該可以考慮用吧@@? 09/28 20:36
19F:→ KC73:float 有時候會有「誤差」,可以看一下 manual 的說明。 09/29 08:35
21F:→ KC73:更正,datetime 是 8 bytes 就好。 10/02 01:15