首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

mysql札记 数据类型:char varchar year datatime

2013-02-24 
mysql笔记 数据类型:char varchar year datatime函数部分:http://dev.mysql.com/doc/refman/5.1/zh/functi

mysql笔记 数据类型:char varchar year datatime

函数部分:http://dev.mysql.com/doc/refman/5.1/zh/functions.html#date-and-time-functions

字符串类型

同:都是按字符数存放。(varchar最多表示2个字节的内容,ascii就是65535个字符,UTF8是22000个左右)

不同:1, char 不够M格,就补空格

2,如果要在最后加空格,用char取出后丢失,varchar不会。


 许多字符串数据类型的列定义可以包括指定字符集的CHARACTER SET属性,也可能包括校对规则。(CHARSET是CHARACTER SET的一个同义词)。这些属性适用于CHAR、VARCHAR、TEXT类型、ENUM和SET。例如:

·                CREATE TABLE t
·                (
·                    c1 CHAR(20) CHARACTER SET utf8,
·                    c2 CHAR(20) CHARACTER SET latin1 COLLATE latin1_bin
·                );


(实际开发中,很少用日期时间类型来表示一个需要精确到秒的列。原因:不方便计算)

DATETIME、DATE和TIMESTAMP类型

DATETIME、DATE和TIMESTAMP类型是相关的。该节描述了它们的特征,它们的相似点和不同点。

当你需要同时包含日期和时间信息的值时则使用DATETIME类型。MySQL以'YYYY-MM-DD HH:MM:SS'格式检索和显示DATETIME值。支持的范围为'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。(“支持”表示尽管先前的值可能工作,但没有保证)。

当你只需要日期值而不需要时间部分时应使用DATE类型。MySQL用'YYYY-MM-DD'格式检索和显示DATE值。支持的范围是'1000-01-01'到 '9999-12-31'。

TIMESTAMP列类型的属性不固定,取决于MySQL版本和服务器运行的SQL模式。这些属性将在本节后面描述。


时间 日期的计算:


Year类型

1、 Year 类型,1个字节表示 1901-2155 【0000表示错误时选择】  

如果输入2位,‘00-69’ 表示2000-2069.   '70'-99 表示1970-1999

建议直接输入4位

create table myyear(nian year);

TIME类型

时间:

1、 Year 类型,1个字节表示 1901-2155 【0000表示错误时选择】  

如果输入2位,‘00-69’ 表示2000-2069.   '70'-99 表示1970-1999

建议直接输入4位

create table myyear(nian year);

TIME类型


MySQL以'HH:MM:SS'格式检索和显示TIME值(或对于大的小时值采用'HHH:MM:SS'格式)。TIME值的范围可以从'-838:59:59'到'838:59:59'。小时部分会因此大的原因是TIME类型不仅可以用于表示一天的时间(必须小于24小时),还可能为某个事件过去的时间或两个事件之间的时间间隔(可以大于24小时,或者甚至为负)。

你可以用各种格式指定TIME值:

·         'D HH:MM:SS.fraction'格式的字符串。还可以使用下面任何一种“非严格”语法:'HH:MM:SS.fraction'、'HH:MM:SS'、'HH:MM'、'D HH:MM:SS'、'D HH:MM'、'D HH'或'SS'。这里D表示日,可以取0到34之间的值。请注意MySQL还不保存分数。

·         'HHMMSS'格式的没有间割符的字符串,假定是有意义的时间。例如,'101112'被理解为'10:11:12',但'109712'是不合法的(它有一个没有意义的分钟部分),将变为'00:00:00'。

·         HHMMSS格式的数值,假定是有意义的时间。例如,101112被理解为'10:11:12'。下面格式也可以理解:SS、MMSS、HHMMSS、HHMMSS.fraction。请注意MySQL还不保存分数。

·         函数返回的结果,其值适合TIME上下文,例如CURRENT_TIME。

mysql> select now();+---------------------+| now()               |+---------------------+| 2013-01-31 14:55:36 |+---------------------+1 row in setmysql> select current_time();+----------------+| current_time() |+----------------+| 14:55:50       |+----------------+1 row in set


对于指定为包括时间部分间割符的字符串的TIME值,如果时、分或者秒值小于10,则不需要指定两位数。'8:3:2'与'08:03:02'相同。

为TIME列分配简写值时应注意。没有冒号,MySQL解释值时假定最右边的两位表示秒。(MySQL解释TIME值为过去的时间而不是当天的时间)。例如,你可能认为'1112'和1112表示'11:12:00'(11点过12分),但MySQL将它们解释为'00:11:12'(11分,12 秒)。同样,'12'和12 被解释为 '00:00:12'。相反,TIME值中使用冒号则肯定被看作当天的时间。也就是说,'11:12'表示'11:12:00',而不是'00:11:12'。

超出TIME范围但合法的值被裁为范围最接近的端点。例如,'-850:00:00'和'850:00:00'被转换为'-838:59:59'和'838:59:59'。

无效TIME值被转换为'00:00:00'。请注意由于'00:00:00'本身是一个合法TIME值,只从表内保存的一个'00:00:00'值还不能说出原来的值是 '00:00:00'还是不合法的值。




1楼littlepig20111008前天 09:50
不错,挺好

热点排行