mysql资料库里的日期用timestamp还是datetime好

如题所述

第1个回答  2022-11-14
mysql资料库里的日期用timestamp还是datetime好 (1)4个位元组储存
(2)值以UTC格式储存
(3)时区转化 ,储存时对当前的时区进行转换,检索时再转换回当前的时区。
(4)TIMESTAMP值不能早于1970或晚于2037!

timestamp在资料库里实际记载的时间是国际标准时间,同一个timestamp值在不同的时区检索出来的日期时间是不一样的,因为系统会根据时区的不同进行自动时区转换,而datetime则不会进行转换时区转换,储存时是什么日期时间,检索出来的就是存入时的日期时间,它不会有变化。至于这两种日期时间型别哪种好是没有定论的,要根据实际情况和应用需求做出取舍。
请注意由于无需实施时区转换,系统处理dateime所产生的系统开销要比timestamp小。

没什么好不好的,方便省事才是王道。都用datetime 你说呢,谁在乎那点储存

型别

型别 储存需求 格式 时间范围
datetime 8个位元组 yyyy-mm-dd hh-mm-ss 1000-01-01 00:00:00 到9999-12-31 23:59:59 timestamp 4个位元组 yyyy-mm-dd hh-mm-ss 1970-01-01 00:00:00 到2037-12-31 23:59:59
timestamp型别会有时区变数的影响,跨时区使用时应注意

datetime 8个位元组 yyyy-mm-dd hh-mm-ss 1000-01-01 00:00:00 到9999-12-31 23:59:59
timestamp 4个位元组 yyyy-mm-dd hh-mm-ss 1970-01-01 00:00:00 到2037-12-31 23:59:59
timestamp型别会有时区变数的影响,跨时区使用时应注意

没什么好不好的,方便省事才是王道。都用datetime 你说呢,谁在乎那点储存 型别 型别 储存需求 格式 时间范围 datetime 8个位元组

Mysql中经常用来储存日期的资料型别有2种:Date、Datetime.

1.Date资料型别:用来储存没有时间的日期。Mysql获取和显示这个型别的格式为“YYYY-MM-DD”。支援的时间范围为“1000-00-00”到“9999-12-31”。

2.Datetime型别:储存既有日期又有时间的资料。储存和显示的格式为 “YYYY-MM-DD HH:MM:SS”。支援的时间范围是“1000-00-00 00:00:00”到“9999-12-31 23:59:59”。

TIMESTAMP列用于INSERT或UPDATE操作时记录日期和时间。如果你不分配一个值,表中的第一个TIMESTAMP列自动设定为最近操作的日期和时间。也可以通过分配一个NULL值,将TIMESTAMP列设定为当前的日期和时间。

TIMESTAMP值返回后显示为'YYYY-MM-DDHH:MM:SS'格式的字串,显示宽度固定为19个字元。如果想要获得数字值,应在TIMESTAMP列新增+0。

注释:MySQL4.1以前使用的TIMESTAMP格式在MySQL5.1中不支援;关于旧格式的资讯参见MySQL4.1参考手册。

datetime
1. 占用8个位元组
2. 允许为空值,可以自定义值,系统不会自动修改其值。
3. 实际格式储存(Just stores what you have stored and retrieves the same thing which you have stored.)
4. 与时区无关(It has nothing to deal with the TIMEZONE and Conversion.)
5. 不可以设定预设值,所以在不允许为空值的情况下,必须手动指定datetime栏位的值才可以成功插入资料。
6. 可以在指定datetime栏位的值的时候使用now()变数来自动插入系统的当前时间。
结论:datetime型别适合用来记录资料的原始的建立时间,因为无论你怎么更改记录中其他栏位的值,datetime栏位的值都不会改变,除非你手动更改它。

timestamp
1. 占用4个位元组
2. 允许为空值,但是不可以自定义值,所以为空值时没有任何意义。
3. TIMESTAMP值不能早于1970或晚于2037。这说明一个日期,例如'1968-01-01',虽然对于DATETIME或DATE值是有效的,但对于TIMESTAMP值却无效,如果分配给这样一个物件将被转换为0。
4.值以UTC格式储存( it stores the number of milliseconds)
5.时区转化 ,储存时对当前的时区进行转换,检索时再转换回当前的时区。
6. 预设值为CURRENT_TIMESTAMP(),其实也就是当前的系统时间。
7. 资料库会自动修改其值,所以在插入记录时不需要指定timestamp栏位的名称和timestamp栏位的值,你只需要在设计表的时候新增一个timestamp栏位即可,插入后该栏位的值会自动变为当前系统时间。
8. 以后任何时间修改表中的记录时,对应记录的timestamp值会自动被更新为当前的系统时间。
结论:timestamp型别适合用来记录资料的最后修改时间,因为只要你更改了记录中其他栏位的值,timestamp栏位的值都会被自动更新。
看完这个比较你就知道用哪个好啦
我们公司一般用datatime,可控性比较强
jdbc查询Mysql资料库的日期问题
你没说错!
查出来可以储存为String型别 具体转化一下就OK了
BBSXP 用的MYSQL资料库还是MSSQL资料库
BBSXP同时支援Aess资料库和MSSQL资料库
在Config.asp档案里定义:
IsSqlDataBase=1 '定义资料库类别,0为Aess资料库,1为SQL资料库
不知道你是哪个版本,在BBSxp 2008 SP2里Config.asp档案在根目录下。内容如下:
<%
InstallIPAddress="127.0.0.1" '安装BBSXP的IP地址,针对install.asp的访问许可权
TablePrefix="BBSXP_" '资料库表的前辍名(一般不用更改)
IsSqlDataBase=0 '定义资料库类别,0为Aess资料库,1为SQL资料库
If IsSqlDataBase=0 Then
'''''''''''''''''''''''''''''' Aess资料库设定 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
SqlDataBase = "database/bbsxp2008.mdb" '资料库路径
SqlProvider = "Microsoft.Jet.OLEDB.4.0" '驱动程式[ Microsoft.Jet.OLEDB.4.0 Microsoft.ACE.OLEDB.12.0 ]
SqlPassword = "" 'ACCESS资料库密码
Connstr="Provider="&SqlProvider&";Jet Oledb:Database Password="&SqlPassword&"; Data Source="&Server.MapPath(SqlDataBase)
SqlNowString="Now()"
SqlChar="'"
IsSqlVer="ACCESS"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Else
'''''''''''''''''''''''''''''' SQL资料库设定 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
SqlLocalName = "(local)" '连线IP [ 本地用 (local) 外地用IP ]
SqlUserName = "sa" 'SQL使用者名称
SqlPassword = "1234" 'SQL使用者密码
SqlDataBase = "bbsxp" '资料库名
SqlProvider = "SQLOLEDB" '驱动程式 [ SQLOLEDB SQLNCLI ]
ConnStr="Provider="&SqlProvider&"; User ID="&SqlUserName&"; Password="&SqlPassword&"; Initial CataLog="&SqlDataBase&"; Data Source="&SqlLocalName&";"
SqlNowString="GetDate()"
IsSqlVer="MSSQL"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
End If
'''''''''''''''''''''''''' 以下为专业人员设定选项,普通使用者请勿修改 ''''''''''''''''''''''''''
Session.CodePage="936" '936(简体中文) 950(繁体中文) 65001(Unicode)
BBSxpCharset="GB2312" 'GB2312(简体中文) Big5(繁体中文) UTF-8(Unicode)
Response.Charset=BBSxpCharset
Response.Buffer=True
%>
注:
上面bbsxp7b1版本用的是Aess资料库,因为IsSqlDataBase=0
mysql资料库可以修改表的日期格式吗
日期型的栏位 储存的格式是固定的不可以修改, 需要输出时 转换成需要的格式, 如果你不想输出时转换 那么需要 设为字元型的, 储存时转换. 总之 不管先转还是后转 ,一定要转
相似回答
大家正在搜