mysqltimestamp,mysql数据库里的日期用timestamp还是datetime好
亲爱的读者们,你是否对mysqltimestamp和mysql数据库里的日期用timestamp还是datetime好的相关问题感到困惑?别担心,今天我将为你解答这些问题,让你对此有更清晰的认识。
mysql数据库里的日期用timestamp还是datetime好
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数据库可以修改表的日期格式吗
日期型的字段存储的格式是固定的不可以修改,需要输出时转换成需要的格式,如果你不想输出时转换那么需要设为字符型的,存储时转换.总之不管先转还是后转,一定要转
mysql 数据类型TIMESTAMP
在mysql中timestamp数据类型是一个比较特殊的数据类型,他可以自动在你不使用程序更新情况下只要你更新了记录timestamp会自动更新时间
通常表中会有一个Create
date
创建日期的字段,其它数据库均有默认值的选项。MySQL也有默认值timestamp,但在MySQL中,不仅是插入就算是修改也会更新timestamp的值!
这样一来,就不是创建日期了,当作更新日期来使用比较好!
因此在MySQL中要记录创建日期还得使用datetime
然后使用NOW()
函数完成!
1:
如果定义时DEFAULT
CURRENT_TIMESTAMP和ON
UPDATE
CURRENT_TIMESTAMP子句都有,列值为默认使用当前的时间戳,并且自动更新。
2:
如果不使用DEFAULT或ON
UPDATE子句,那么它等同于DEFAULT
CURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP。
3:
如果只有DEFAULT
CURRENT_TIMESTAMP子句,而没有ON
UPDATE子句,列值默认为当前时间戳但不自动更新。
4:
如果没用DEFAULT子句,但有ON
UPDATE
CURRENT_TIMESTAMP子句,列默认为0并自动更新。
5:
如果有一个常量值DEFAULT,该列会有一个默认值,而且不会自动初始化为当前时间戳。如果该列还有一个ON
UPDATE
CURRENT_TIMESTAMP子句,这个时间戳会自动更新,否则该列有一个默认的常量但不会自动更新。
换句话说,你可以使用当前的时间戳去初始化值和自动更新,或者是其中之一,也可以都不是。(比如,你在定义的时候可以指定自动更新,但并不初始化。)
mysql中“datetime”和“timestamp”的区别是什么
DATETIME、DATE和TIMESTAMP,除了DATE用来表示一个不带时分秒的是日期,另外两个都带时分秒。TIMESTAMP还可以精确到毫秒。
TIMESTAMP列必须有默认值,默认值可以为“0000-00-00 00:00:00”,但不能为null。
TIMESTAMP列不可以设置值,只能由数据库自动去修改。
一个表可以存在多个TIMESTAMP列,但只有一个列会根据数据更新而改变为数据库系统当前值。因此,一个表中有多个TIMESTAMP列是没有意义,实际上一个表只设定一个TIMESTAMP列。
文章到此结束,希望我们对于mysqltimestamp和mysql数据库里的日期用timestamp还是datetime好的问题能够给您带来一些启发和解决方案。如果您需要更多信息或者有其他问题,请随时联系我们。