作者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