mysql数据库里的日期用timestamp还是datetime好

mysql数据库里的日期用timestamp还是datetime好,第1张

mysql数据库里的日期用timestamp还是datetime好 (1)4个字节储存

(2)值以UTC格式保存

(3)时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区。

(4)TIMESTAMP值不能早于1970或晚于2037!

timestamp在数据库里实际记载的时间是国际标准时间,同一个timestamp值在不同的时区检索出来的日期时间是不一样的,因为系统会根据时区的不同进行自动时区转换,而datetime则不会进行转换时区转换,存储时是什么日期时间,检索出来的就是存入时的日期时间,它不会有变化。至于这两种日期时间类型哪种好是没有定论的,要根据实际情况和应用需求做出取舍。

请注意由于无需实施时区转换,系统处理dateime所产生的系统开销要比timestamp小。

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

类型

类型 存储需求 格式 时间范围

datetime8个字节 yyyy-mm-dd hh-mm-ss 1000-01-01 00:00:00 到9999-12-31 23:59:59 timestamp4个字节 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数据库可以修改表的日期格式吗

日期型的字段 存储的格式是固定的不可以修改, 需要输出时 转换成需要的格式, 如果你不想输出时转换 那么需要 设为字符型的, 存储时转换. 总之 不管先转还是后转 ,一定要转

timestamp:占用 4 字节,内部实现是新纪元时间(1970-01-01 00:00:00)以来的秒,那么这种格式在展示给用户的时候就需要做必要的时区转换才能得到正确数据。

在进行新纪元时间(1970-01-01 00:00:00)以来的秒到实际时间之间转换的时候 MySQL 根据参数 time_zone 的设置有两种选择:

time_zone 设置为 SYSTEM 的话:使用 sys_time_zone 获取的 OS 会话时区,同时使用 OS API 进行转换。对应转换函数 Time_zone_system::gmt_sec_to_TIME

time_zone 设置为实际的时区的话:比如 ‘+08:00’,那么使用使用 MySQL 自己的方法进行转换。对应转换函数 Time_zone_offset::gmt_sec_to_TIME

实际上 Time_zone_system 和 Time_zone_offset 均继承于 Time_zone 类,并且实现了 Time_zone 类的虚函数进行了重写,因此上层调用都是 Time_zone::gmt_sec_to_TIME。

注意这种转换 *** 作是每行符合条件的数据都需要转换的。

时间戳(timestamp),通常是一个字符序列,唯一地标识某一刻的时间。数字时间戳技术是数字签名技术一种变种的应用。

定义

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

分类

1.自建时间戳:此类时间戳是通过时间接收设备(如GPS,CDMA,北斗卫星)来获取时间到时间戳服务器上,并通过时间戳服务器签发时间戳证书。此种时间戳可用来企业内部责任认定,在法庭认证时并不具备法律效力。因其在通过时间接收设备接收时间时存在被篡改的可能,故此不能做为法律依据。

2.具有法律的效力的时间戳:它是由我国中科院国家授时中心与北京联合信任技术服务有限公司负责建设的我国第三方可信时间戳认证服务。由国家授时中心负责时间的授时与守时监测。因其守时监测功能而保障时间戳证书中的时间的准确性和不被篡改。获取时间戳平台有“大众版权保护平台”,可与我国中科院国家授时中心时间同步。

数据库系统中时间戳

数据库中自动生成的唯一二进制数字,与时间和日期无关的, 通常用作给表行加版本戳的机制。存储大小为 8个字节。

每个数据库都有一个计数器,当对数据库中包含 timestamp 列的表执行插入或更新 *** 作时,该计数器值就会增加。该计数器是数据库时间戳。这可以跟踪数据库内的相对时间,而不是时钟相关联的实际时间。一个表只能有一个 timestamp 列。每次修改或插入包含 timestamp 列的行时,就会在 timestamp 列中插入增量数据库时间戳值。这一属性使 timestamp 列不适合作为键使用,尤其是不能作为主键使用。对行的任何更新都会更改 timestamp 值,从而更改键值。如果该列属于主键,那么旧的键值将无效,进而引用该旧值的外键也将不再有效。如果该表在动态游标中引用,则所有更新均会更改游标中行的位置。如果该列属于索引键,则对数据行的所有更新还将导致索引更新。

使用某一行中的 timestamp 列可以很容易地确定该行中的任何值自上次读取以后是否发生了更改。如果对行进行了更改,就会更新该时间戳值。如果没有对行进行更改,则该时间戳值将与以前读取该行时的时间戳值一致。若要返回数据库的当前时间戳值,请使用 @@DBTS。

在控制并发时起到作用

用户A/B同时打开某条记录开始编辑,保存是可以判断时间戳,因为记录每次被更新时,系统都会自动维护时间戳,所以如果保存时发现取出来的时间戳与数据库中的时间戳如果不相等,说明在这个过程中记录被更新过,这样的话可以防止别人的更新被覆盖。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6690336.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存