This Domain(Admin5.com) is for Sale:

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

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


从表面上看,出现的行排序有误,第一列中的值全都相同,所以似乎排序是根据第二列中的值进行的。这个表面反常的结果是由于事实上, MySQL 是根据插入T I M E S TAMP 列的全部14 位值进行排序的。MySQL 没有可在记录建立时设置为当前日期和时间、并从此以后保持不变的列类型。假如要实现这一点,可用两种方法来完成:
■ 使用T I M E S TAMP 列。在最初建立一个记录时,设置该列为N U L L,将其初始化为当前日期和时间:

在以后无论何时更改此记录,都要明确地设置此列为其原有的值。赋予一个明确的值使时间戳机制失效,因为它阻止了该列的值自动更新:

■ 使用D ATETIME 列。在建立记录时,将该列的值初始化为NOW( ):

无论以后何时更新此记录,都不能动该列:U P D ATE tbl_name SET /* angthing BUT dt_col here */ WHERE ...假如想利用T I M E S TAMP 列既保存建立的时间值又保存最后修改的时间值,那么可用一个T I M E S TAMP 列来保存修改时间值,用另一个T I M E S TAMP 列保存建立时间值。要保证保存修改时间值的列为第一个T I M E S TA M P,从而在记录建立或更改时自动对其进行设置。使保存建立时间值的列为第二个T I M E S TA M P,并在建立新记录时将其初始化为NOW( )。这样第二个T I M E S TAMP 的值将反映记录建立时间,而且以后将不再更改。

织梦好,好织梦


3. YEAR 列类型
YEAR 是一个用来有效地表示年份值的1个字节的列类型。其取值范围为从1901 到2 1 5 5。在想保存日期信息但又只需要日期的年份时可使用YEAR 类型,如出生年份、政府机关选举年份等等。在不需要完全的日期值时, YEAR 比其他日期类型在空间利用上更为有效。
YEAR 列的定义可包括显示宽度M 的说明,显示宽度应该为4 或2。假如YEAR 定义中省略了M,其缺省值为4。TINYINT 与YEAR 具有相同的存储大小(一个字节),但取值范围不同。要使用一个整数类型且覆盖与YEAR 相同的取值范围,可能需要SMALLINT 类型,此类型要占两倍的空间。在所要表示的年份取值范围与YEAR 类型的取值范围相同的情况下, YEAR 的空间利用率比SMALLINT 更为有效。YEAR 相对整数列的另一个优点是MySQL 将会利用MySQL 的年份推测规则把2 位值转换为4 位值。例如,97 与14 将转换为1997 和2 0 1 4。但要熟悉到,插入数值00 将得到0000 而不是2 0 0 0。假如希望零值转换为2 0 0 0,必须指定其为串“0 0”。

4. 日期和时间列类型的属性没有专门针对日期和时间列类型的属性。通用属性NULL 和NOT NULL 可用于任意日期和时间类型。假如NULL 和NOT NULL 两者都不指定,则缺省值为N U L L。也可以用DEFA ULT 属性指定一个缺省值。假如不指定缺省值,将自动选择一个缺

本文来自织梦


省值。含有NULL 的列的缺省值为NULL 。否则,缺省值为该类型的“零”值。
5. 处理日期和时间列MySQL 可以理解各种格式的日期和时间值。D ATE 值可按后面的任何一种格式指定,其中包括串和数值形式。表2 - 1 3为每种日期和时间类型所答应的格式。两位数字的年度值的格式用“歧义年份值的解释”中所描述的规则来解释。对于有分隔
符的串格式,不一定非要用日期的“ -”符号和时间的“ :”符号来分隔,任何标点符号都可用作分隔符,因为值的解释取决于上下文,而不是取决于分隔符。例如,虽然时间一般是用分隔符“:”指定的,但MySQL 并不会在一个需要日期的上下文中将含有“ :”号的值理解成时间。此外,对于有分隔符的串格式,不需要为小于10 的月、日、小时、分钟或秒值指定两个数值。下列值是完全等同的:

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

文章评论

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

24小时热门信息