将数据库 datetime 拆分成年、月、日多个字段的时候要注意

作者:vkvi 来源:ITPOW(原创) 日期:2012-3-2

为了统计时编程方便,有些开发者喜欢把数据库表中的日期字段拆成多个字段,比如拆成 int 类型的年、月、日三个字段。

必要性

这样做也不是没有必要,它有一种方便性,比如要统计 2012 年的,就直接写“年=2012”,要统计所有年 3 月的,就直接写“月=3”,此点是一个 datetime 日期字段不好办到的。

还有,如果要按周、旬、半月、季、半年这些来统计,再增加相应的字段就更方便了,因为在 datetime 中并不能直接的体现这些值。

注意事项

一是要使用统一入口进行数据更新管理,避免形成 13 月这种情况,虽然可以用约束控制月份不要超过 12,但像闰年 2 月这些情况就更麻烦了。

二是要注意在查询时,避免像 datetime 一样来限定范围。比如:

where 年<=2012 and 月<=3

并不表示 2012 年 3 月及以前的记录,而是表示 2012 年及以前所有年 1-3 月的记录,若要表示 2012 年 3 月及以前的记录,则应该使用如下方式:

where (年<2012 or (年=2012 and 月<=3))

相关文章