关于把日期类型数据分成年和月两个字段存储

coder 2010-06-10 11:46:37
test : 地区 年份 月份 同比增长(%) 累计同比增长(%)

为什么不采用日期类型字段
以前做东西的时候,做过统计到某年某月的数据,生成某年某月到某年某月的报表,查询条件写起来不是很麻烦。
但是获取查询数据的的条件信息时,总是要拆分截取日期,进行日期转换,一直被困扰关于日期格式转换。
例如我要录入2009年1月份的信息,2010年2月份的信息,等等。放到数据库的日期类型的字段就不好写。
注意:可能采用字符类型代替但是感觉怪怪的。)

由于不具体到天,
所以大胆的把数据中日期字段给分成年和月两个字段,这样从心里上感觉还行,就是有点别扭,而且写查询条件的时候不是很符合常规。但是能实现自己的功能。
查询从某年某月到某年某月的信息
select * from `test`
where
(`year` between '2011'+0 and '2012'+0 )
and
`month` between '2'+0 and '8'+0
查询从某年到某年的信息
select * from `test`
where
year` between '2011'+0 and '2012'+0

(这种写法限于mysql)

咨询一下:
大家如何处理这种情况的?一起讨论一下。等待中。。。。学习中。。。。
...全文
213 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2010-06-10
  • 打赏
  • 举报
回复
没什么不可以啊。 这种设计在数据仓库中很常见,把年,月,日单独存储到不同字段。
WWWWA 2010-06-10
  • 打赏
  • 举报
回复
一般直接用日期型字段,取年、月、日用相应函数,可以避免日期不规范
数据库表设计 数据库表设计全文共3页,当前为第1页。好的数据结构会影响速度。好的数据库表设计会影响数据库操作效率。特别是数据多的时候,如果表的结构不好的话操作的时候条件(where后的内容)会变的非常复杂。 SQL是关系数据库中用到的一种语言。所以,为了简化SQL,表的关系(内部和外部)要尽量设计的合理。 下面有几个可以参照的步骤: 1)找出那个表要描述的东西; 2)列出你想通过这个表得到的相关信息的列表; 3)通过上面的信息列表,将信息划分成一块块小的部分,通过此小块来建表; 比如说: 现在需求是: 1)我需要一个表来管理我的朋友的个人信息; 2)我想要的是:通过名字查到某人的地址,生日和邮箱; 3)将上面的信息划分成一块块分别对应表里的一个字段,所以表可以如下: 姓名 住址 邮箱 生日 但需求可能更细,比如说:生日我想精确到,这样方便我查询每里所有的朋友。这样就可以将生日再细分成日三个字段。甚至如果要细分的话,地址可以再分国国家,省,市等。当然,这就看你想通过表获得哪些数据,一切设计是为了方便数据库操作。在方便自己的前提下将数据表的字段设计成"原子化"(即不可再细分)。比如说,一个网上商店的数据表,什么路多少号对于它来说就是原子化的数据了,就不用再把什么街多少号分开做为两个字段存储。但对于一个地产商来说,他希望可以通过街道名,号,等来查,所以地址分成几个字段会更好。 字段的原子化是指一个字段里不要包括多个同类的值;如: name interests jim fishing,football lilei walking,book 表的原子化是指一个表里不要包括几个储存同类值的字段;如: teacher student1 student2 student3 lucy hanmeimei poli lily jack rose mary simon 这里的student1 student2 student3 就重复了。但上面这两种情况似乎只能选择其中一个,也就是说无法满足绝对的原子化,其实不然.我们可以把这些无法满足原子化的字段另外建一个表,让两个表关联起来. 更合理的表设计会给每条记录加上一个唯一的识别,就是加上主键。 1)将一个表字段设为主键要求在表创建的时候就进行设置。 2) 一个表里被设为主键的字段的值必须是唯一的,也就是说如果一个字段被设为主键,这个表所有的数据列表里这个字段的值不可能有重复的。 3) 被设为主键的字段不能插入空值。 4) 被设为主键的字段的值是不能更改的。 5) 如果字段被设为是自增长的,主键只能设置一个且它必须是主键。如果表中没有自增长的字段,则可以设多个字段为主键. 6) 主键最好是一个和表里数据无关的值。比如说另建一个字段:id;而不要设在:name 等这些字段上。 前面提到了两个表关联.两个表之间数据的关系有三种: 1)一对一;两个表里数据唯一对应; 2)一对多;表A在表B里对应多条数据,但表B里的一条数据绝对只对就A中的一条数据; 3)多对多;A里的一条数据对应B里的多条数据,B里一条数据也对应A中的多条数据. 一对一 的表设计用的不多.可能用到的情况有: a)对一个表中大多数时候不查的字段,放到另一个表中对应起来.这样可以提高大多数时候查询的效率; b)若表中记录还有些字段的值未知,可以将这些字段分出来放.这样可以让主表中不存在NULL; c)不想轻易就查出来的数据,比如一个人的工资详情,等.可以在主另一表中放着; d)大文本,通过一个外键关联,这样可以提高查询效率; 一对多 的情况可以如下: 有一个人员信息表info,里面包括一个外键:email;这个字段里存的是邮箱表emailBox里的主键:id;因为一个人可以对应多个邮箱,但一个邮箱只能属于一个人(他自己要共用木有办法) 数据库表设计全文共3页,当前为第2页。 多对多 对优化表设计的用处最大,效果最显著;一个多对多的关系是由一个连接表有两个一对多的表关系组成的;查看下图: 数据库表设计全文共3页,当前为第1页。 数据库表设计全文共3页,当前为第2页。 user_id user_name 1 张三 2 李四 3 王五 user_id produc_id 1 1 1 3 2 2 2 3 3 1 3 2 3 3 produc_id produc_name 1 LiNing 2 Nike 3 Adidas 另外,同一个表里的各字段之间不要有复杂的依赖关系.各字段只能和主键有依赖关系.如果非主键和非主键间有依赖关系,就要将它们从主表分离出去,放在另一个表中,并通过外键进行关联 数据库表设计全文共3页,当前为第3页。 数据库表设计全文共3页,当前为第3页。 数据库表设计
ASP+ACCESS的版本安装说明: 1.需要支持ASP和Access数据库的空间。 2.超级管理员登陆页面:qqcf_admin.asp,默认用户名为:www.qqcf.com,密码:www.qqcf.com,请安装后立即修改! 3.计数器的图片制作的PhtoShop和Flash源文件放在QQCF_Pic目录里,你可以修改成你自己的图片,当然也可以自己做啦。 4.如果忘记密码请打开数据库修改,把Password字段的对应值修改为254a978baaa071ad,这样密码就变为www.qqcf.com 5.免费版请保留版权使用,作者不对其作品付任何责任,你可以任意传播。 6.未经作者许可请勿用于任何商业用途。 7.计数器的MsSql版,采用DLL组件、存储过程、事务编写,支持百万级数据量,提供免费下载,无任何限制,只需保留版权使用即可,需要的朋友请到作者网站http://www.qqcf.com下载。 8.必须接受以下乘风原创程序用户协议方可以使用本计数程序 功 能: 1.总共60记数器图片样式自由选择,并且可以方便地增加记数器图片样式。 2.可以设置计数器显示数字,显示位数,计数器是否隐藏,统计信息是否公开等。 3.页面显示记数和IP防刷新记数两种记数模式,支持Script方式和Img方式调用计数器代码。 4.可以记录来访客的来源IP地址和来源页面信息,在线人数。 5.每、每天和每小时的访问数据统计,回头率统计,每个网页浏览统计。 6.搜索引擎统计,还可以自己定义搜索引擎,搜索关键字统计。 7.注册用户找回密码功能,用户可以重置统计,删除注册账号。 8.多用户计数器,具有管理注册用户功能。 9.系统会自动删除过多的以前的无用的来源和在线记录,保证系统快速稳定运行,还可以在线压缩数据库。 10.增加计数器图片样式的方法:把新的计数器图片复制到qqcf_counterpic目录,然后设置样式数量即可。 11.安全性:密码MD5加密,注册、登陆使用验证码,完全防Sql注入 独有的特色: 1.计数器数字图片和统计图标两种机制共存,众多设置可调。 2.Script和Img两种方式调用计数器,Img方式计数器可以在任何能插入图片的地方使用。 3.独有的错误自动修复机制,能在计数器发生错误后自动修复。 4.完全杜绝并发线程容易对数据库造成的损坏,在流量大的网站上使用表现很稳定。 5.缓存机制,在缓存中保存数据,操作常见动作,大量减少对数据库的增加,删除频繁的操作。 6.稳定性、安全性、速度上表现都很优秀,功能齐全,代码集成程度高、完全公开,专业制作,完全免费。 乘风原创程序用户协议 乘风原创程序作者(以下简称作者)在此特别提醒,用户(您)欲使用乘风原创程序(以下简称乘风程序),必须事先认真阅读本协议,包括免除或者限制作者的免责条款及对用户的权利限制。请您审阅并接受或不接受本服务条款(未成人审阅时应得到法定监护人的陪同)。如您不

6,108

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 数据库报表
社区管理员
  • 数据库报表社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧