189 8069 5689

mysql日期怎么选 mysql日期用什么类型

Mysql时间字段格式如何选择,TIMESTAMP,DATETIME,INT?

第三,TIMESTAMP比较受时区timezone的影响以及MYSQL版本和服务器的SQL

创新互联专注于黄石港企业网站建设,成都响应式网站建设公司,商城开发。黄石港网站建设公司,为黄石港等地区提供建站服务。全流程按需搭建网站,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

MODE的影响

所以一般来说,我比较倾向选择DATETIME,至于你说到索引的问题,选择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储存时间选择怎样的字段类型

储存时间,常用的有三个选择datetime、timestamp、int。昨夜同事问到了,于是今天就总结一下自己的理解。插入效率:datetime

timestamp

int读取效率:int

timestamp

datetime储存空间:datetime

timestamp

=

int具体上面的实验数据可以看这篇文章。

建立索引的体积,和索引的速度,你懂的。

让我们来看一个应用场景:

看下这张图,第一我们需要设置系统的默认时区,第二我们也需要提供不同时区时间显示的需要。于是,我们分别使用datetime、timestamp、int字段类型来看下:使用datetime直接显示时间,这是个不错的选择,但是如果考虑到时区,很明显计算上的麻烦。使用timestampOK,这个很好,可以根据系统的时区来自动输出时间,但是单个用户要定制自己的时区呢?再者你不怕麻烦,在程序里面实现了这个计算,服务器若是换个地方,改了下时区,你程序里面计算单个用户当地时间的代码怎么办(timestamp出来的时间会根据时区的变化而变化,在某些情况下是不错的选择,但在某些情况下,真的很鸡肋)。使用int从上面两个类型的缺点看来,貌似这个类型可以解决以上的问题,其实我们只要存格林时间的unix

timestamp就好了,时区时间的计算上也很方便,读取的效率也不错。我觉得用这个储存的缺点呢,就是直接select的时候时间不能直观的显示出来。看看其他开源程序是怎么做的discuz,

typecho,

emlog等等等等,他们都选用int了,这一定有他们的道理,我想也没什么可以多说的了。

mysql 中怎么设置默认值为系统日期

--

方法一:

由于MySQL目前

字段

默认值

不支持

函数

,所以以create_time

datetime

default

now()

的形式设置默认值是不可能的。代替的

方案

是使用TIMESTAMP类型代替DATETIME类型。

TIMESTAMP列类型自动地用当前的

日期

和时间

标记

INSERT或UPDATE的操作。如果有多个TIMESTAMP列,只有第一个自动更新。

自动更新第一个TIMESTAMP列在下列任何条件下发生:

1.列值没有明确地在一个INSERT或LOAD

DATA

INFILE语句中指定。

2.列值没有明确地在一个UPDATE语句中指定且另外一些的列改变值。(注意一个UPDATE设置一个列为它已经有的值,这将不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。)

3.你明确地设定TIMESTAMP列为NULL.

4.除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。

所以把日期类型

选择成timestamp

允许空就可以了

CREATE

TABLE

test

(

uname

varchar(50)

NOT

NULL,

updatetime

timestamp

NULL

DEFAULTCURRENT_TIMESTAMP

ON

UPDATE

CURRENT_TIMESTAMP

)

ENGINE=InnoDB

DEFAULT

CHARSET=utf8;

如果要在navicat下操作的话,将字段设置为timestamp,然后默认值写上CURRENT_TIMESTAMP即可

怎样在MySQL中操作日期

设置某字段为当前时间,修改日期类型为timestamp并允许空,如下:CREATETABLE`test`(`aaaa`varchar(50)NOTNULL,`createday`timestampNULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP)ENGINE=InnoDBDEFAULTCHARSET=utf8;如果是在navicat下操作的话,设置字段的类型为timestamp,默认值写上CURRENT_TIMESTAMP.


网站标题:mysql日期怎么选 mysql日期用什么类型
网站URL:http://jkwzsj.com/article/dodjioo.html

其他资讯