资料库日期栏位的设计问题
时间:2014-06-21
来源:互联网
例如一些投诉系统内, 投诉者所述的事发日期,
会有以下情况:
1) 可以讲出确实日期, 如2014-06-01
2) 只可讲出大约时间, 如6月上旬
3) 一些更夸张, 如2014年上旬, 2014年内
当设计这个"事发日期"的Data Type,
应如何处理?
作者: Youq 发布时间: 2014-06-21
但理想情况下, 如果select 2014年内,
以下资料都应被找出:
2014-06-01
6月上旬
2014年上旬
2014年内
作者: Youq 发布时间: 2014-06-21
现实上, 很多时日期资料是不完整的,
例如一些投诉系统内, 投诉者所述的事发日期,
会有以下情况:
1) 可以讲出确实日期, 如2014-06-01
2) 只可讲出大约时间, 如6月上旬
3) 一些更夸张, 如2014年上旬, 2014年内
...
所以问题是如何 design data type/class ,然后把这种 data type/class 的 data map 到 database 。
当然考虑应用/ search 资料时,或者要加额外的 data 来加快存取速度或简化存取程序。
作者: xianrenb 发布时间: 2014-06-21
当然, 可以视为string,
但理想情况下, 如果select 2014年内,
以下资料都应被找出:
2014-06-01
6月上旬
2014年上旬
2014年内
唔会督死一日.
个 date field 其实系 nominal date, 挂名.
Search, report 用佢.
E.g.
2014-06-01 = 2014-06-01
6月上旬 = 2014-06-01
2014年上旬 = 2014-01-01
2014年内 = 2014-01-01
为左保留 raw information, 另设一个 Date_desc 系 string.
储 "2014年6月上旬"
可能另外考虑增加多一个 Duration (no. of days) 为相关用途.
作者: 111x111=12321 发布时间: 2014-06-21
总结 师兄的意思:
1. 以一系列的栏位表达这资料
2. 一part 是raw information(用来比人看), 另一part是用来Search (用来比人Search)
我说得对吗?

到用时, 一定系用 range 做条件 search 架啦,
唔会督死一日.
个 date field 其实系 nominal date, 挂名.
Search, report 用佢.
E.g.
2014-06-01 = 2014-06-01
6月上旬 = 2014-06-01
2014年上旬 = 2014 ...
作者: Youq 发布时间: 2014-06-21
谢谢师兄!! 不失为一个方法,
总结 师兄的意思:
1. 以一系列的栏位表达这资料
2. 一part 是raw information(用来比人看), 另一part是用来Search (用来比人Search)
我说得对吗?


作者: 111x111=12321 发布时间: 2014-06-21

师兄意思是用Program做哂所有嘢, 而不在Database内做住何嘢?
但就算系, 都要想一种Structure来存入Database的, 是吗?
我认为 database 只是一种储存 data 的方法,只不过它有 indexing 一类功能可以加快存取速度。
所以问题是如何 design data type/class ,然后把这种 data type/class 的 data map 到 database 。
当然考虑应 ...
作者: Youq 发布时间: 2014-06-21
是否可以自建一个dataType,
去实现题述咁特别的资料类型?
作者: Youq 发布时间: 2014-06-21
为做而做.

除非你「好需要」半人工智能或对照table去翻译 :
"6月上旬" => (today is in June) 2014.6.1
自动填上2014.6.1, 惊死人手填错.

作者: 111x111=12321 发布时间: 2014-06-21
对於Program的架构是有好处的,
因为Application层面视这个dataType为一整体,
D Code都会清楚简单一点
Trivial
为做而做.

除非你「好需要」半人工智能或对照table去翻译 :
"6月上旬" => (today is in June) 2014.6.1
自动填上2014.6.1, 惊死人手填错.

作者: Youq 发布时间: 2014-06-21
唔觉.
作者: 111x111=12321 发布时间: 2014-06-21
不太明白这个做法?

师兄意思是用Program做哂所有嘢, 而不在Database内做住何嘢?
但就算系, 都要想一种Structure来存入Database的, 是吗?
日期可以转用 unix time stamp 的方法,即是转为秒数。
那么用什么 database 存 integer 都一定 ok 。
如果要写一个符合你要求的 class ,就最少要用数个 data member 。
那么 map 到 database ,就至少有几个相关的 field 。
作者: xianrenb 发布时间: 2014-06-21
作者: kamchihau 发布时间: 2014-06-21
加多个end datetime field 米得囉, user ui select 6 月上旬,即系等於入start datetime 6月1月, end datetime 6 月15
作者: form5 发布时间: 2014-06-21
如果要再细致一些,可以用0代表真实,+/-1代表一星期前后,2代表月,3代表季,4代表半年……
作者: 111x111=12321 发布时间: 2014-06-21
旧70年代bytes矜贵确实需要悭位编晒码,
或者个database系keep电力公司客户或全国人民资料, 先用咁「系统」化储存表达.
作者: ming12345 发布时间: 2014-06-21
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28