This Domain(Admin5.com) is for Sale:

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

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


请注重,有前导零的值根据它们被指定为串或数有不同的解释。串“ 0 0 1 2 3 1”将视为一个六位数字的值并解释为D ATE 的“2 0 0 0 - 1 2 - 3 1”和D ATETIME 的“2000-12-31 00:00:00”。而数0 0 1 2 3 1被认为1 2 3 1,这样的解释就有问题了。这种情形最好使用串值,或者假如要使用数值的话,应该用完全限定的值(即, D ATE 用2 0 0 0 1 2 3 1,D ATETIME 用2 0 0 0 1 2 3 1 0 0 0 0)。通常,在D AT E、D ATETIME 和T I M E S TAMP 类型之间可以自由地赋值,但是应该记住以下一些限制:
■ 假如将D ATETIME 或T I M E S TAMP 值赋给D AT E,则时间部分被删除。
■ 假如将D ATE 值赋给D ATETIME 或T I M E S TA M P,结果值的时间部分被设置为零。
■ 各种类型具有不同的取值范围。T I M E S TAMP 的取值范围更受限制( 1970 到2 0 3 7),因此,比方说,不能将1970 年以前的DATETIME 值赋给T I M E S TAMP 并得到合理的结果。也不能将2037 以后的值赋给TIMES TAMP。MySQL 提供了许多处理日期和时间值的函数。要了解更具体的信息请参阅附录C。
6. 歧义年份值的理解
对于所有包括年份部分的日期和时间类型( DATE、DATE TIME、TIME STAMP、YEAR),MySQL将两位数字的年份转换为四位数字的年份。这个转换根据下列规则进行(在MySQL4.0 中,这些规则稍有改动,其中69 将转换为1969 而不是2069。这是根据X/Open UNIX 标准规定的规则作出的改动): 内容来自dedecms
■ 00 到69 的年份值转换为2000 到2069。
■ 70 到99 的年份值转换为1970 到1999。
通过将不同的两位数字值赋给一个YEAR 列然后进行检索,可很轻易地看到这些规则的效果。下面是检索程序:

请注重,00 转换为0000 而不是2 0 0 0。这是因为0 是YEAR 类型的一个完全合法的值;假如插入一个数值,得到的就是这个结果。要得到2 0 0 0,应该插入串“ 0”或“0 0”。可通过C O N C AT( ) 插入YEAR 值来保证MySQL 得到一个串而不是数。C O N C AT( ) 函数不管其参数是串或数值,都返回一个串结果。请记住,将两位数字的年份值转换为四位数字的年份值的规则只产生一种结果。在未给
定世纪的情况下,MySQL 没有办法肯定两位数字的年份的含义。假如MySQL 的转换规则不能得出您所希望的值,解决的方法很简单:即用四位数字输入年份值。MySQL 有千年虫问题吗?MySQL 自身是没有2000 年问题的,因为它在内部是按四位数年份存储日期值的,并且由用户负责提供恰当的日期值。两位数字年份解释的实际问题不是MySQL 带来的,而是由于有的人想省事,输入歧义数据所引起的问题。假如您愿意冒险,可以继续这样做。在您冒险的时候,MySQL 的猜测规则是可以使用的。但要意识到,很多时候您确实需要输入四位数字的年份。例如, p r e s i d e n t表列出了1700 年以来的美国总统,所以在此表中录入出生与死亡日期需要四位的年份值。这些列中的年份值跨了好几个世纪,因此,让MySQL 从两位数字的年份去猜测是哪个世纪是不可能的。 dedecms.com

织梦好,好织梦


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

文章评论

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

24小时热门信息