This Domain(Admin5.com) is for Sale:

My SQL数据库实用技术(08)

时间:2007-12-23  来源:不详  作者:迈克DB

2.2.4 日期和时间列类型
MySQL 提供了几种时间值的列类型,它们分别是: DATE、DATE TIME、TIME、TIMES TAMP 和YEAR。表2-9 给出了MySQL 为定义存储日期和时间值所提供的这些类型,并给出了每种类型的合法取值范围。YEAR 类型是在MySQL 3.22版本中引入的。其他类型在所有MySQL 版本中都可用。每种时间类型的存储需求见表2 - 1 0。每个日期和时间类型都有一个“零”值,在插入该类型的一个非法值时替换成此值,见表2 - 11。这个值也是定义为NOT NULL 的日期和时间列的缺省值。


MySQL 表示日期时根据ANSI 规范首先给出年份。例如,1999 年12 月3 日表示为“1 9 9 9 - 1 2 - 0 3”。MySQL 答应在输入日期
时有某些活动的余地。如能将两个数字的年份转换成四位数字的年份,而且在输入小于10 的月份和日期时不用输入前面的那位数字。但是必须首先给出年份。平常经常使用的那些格式,如“ 1 2 / 3 / 9 9”或“3 / 1 2 / 9 9”,都是不正确的。MySQL 使用的日期表示规则请参阅“处理日期和时间列”小节。时间值按本地时区返回给服务器; MySQL 对返回给客户机的值不作任何时区调整。 织梦内容管理系统
1. DATE、TIME 和DATETIME 列类型DATE、TIME 和DATETIME 类型存储日期、时间以及日期和时间值的组合。其格式为“YYYY - MM - DD”、“h h : m m : s s”和“YYYY - MM - DD hh:mm:ss”。对于D ATETIME 类型,日期和时间部分都需要;假如将D ATE 值赋给DATETIME 列,MySQL 会自动地追加一个为“0 0 : 0 0 : 0 0”的时间部分。MySQL 对D ATETIME 和TIME 表示的时间在处理上稍有不同。对于D ATETIME ,时间部分表示某天的时间。而TIME 值表示占用的时间(这也就是为什么其取值范围如此之大而且答应取负值的原因)。用TIME 值的最右边部分表示秒,因此,假如插入一个“短”(不完全)的时间值,如“1 2 : 3 0”到TIME 列,则存储的值为“ 0 0 : 1 2 : 3 0”,即被认为是“12 分30 秒”。假如愿意,也可用TIME 列来表示天的时间,但是要记住这个转换规则以免出问题。为了插入一个“12 小时30 分钟”的值,必须将其表示为“ 1 2 : 3 0 : 0 0”。
2. TIMESTAMP 列类型
TIMES TAMP 列以YYYYMMDDhhmmss 的格式表示值,其取值范围从19700101000000到2037 年的某个时间。此取值范围与UNIX 的时间相联系,在UNIX 的时间中,1970 年的第一天为“零天”,也就是所谓的“新纪元”。因此1970 年的开始决定了T I M E S TAMP 取值范围的低端。其取值范围的上端对应于UNIX 时间上的四字节界限,它可以表示到2037年的值。(TIMES TAMP 值的上限将会随着操作系统为扩充UNIX 的时间值所进行的修改而增加。这是在系统库一级必须提及的。MySQL 也将利用这些更改。)TIMES TAMP 类型之所以得到这样的名称是因为它在创建或修改某个记录时,有非凡的记录作用。假如在一个TIMES TAMP 列中插入NULL,则该列值将自动设置为当前的日期和时间。在建立或更新一行但不明确给TIMES TAMP 列赋值时也会自动设置该列的值为当前的日期和时间。但是,仅行中的第一个TIMES TAMP 列按此方式处理,即使是行中第一个TIMESTAMP列,也可以通过插入一个明确的日期和时间值到该列(而不是NULL)使该处理失效。
内容来自dedecms


TIMES TAMP 列的定义可包含对最大显示宽度M 的说明。表2 - 1 2给出了所答应的M 值的显示格式。假如TIMES TAMP 定义中省略了M 或者其值为0或大于1 4,则该列按TIMES TAMP(14) 处理。取值范围从1到1 3的M 奇数值作为下一个更大的偶数值处理。T I M E S TAMP 列的显示宽度与存储大小或存储在内部的值无关。TIMES TAMP 值总是以4 字节存放并按14 位精度进行计算,与显示宽度无关。为了明白这一点,按如下定义一个表,然后插入一些行,进行检索:

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容

24小时热门信息