关于Oracle中用Varchar2(10)对日期字段保存的方案。

ragweed_wg 2006-06-14 11:40:30
项目中的许多日期,只需要保存到年月日,出于开发的简单(减少to_char、to_date的转换),将日期字段定义为“varchar(10)”,格式为“YYYY-MM-DD”,由于页面中通过了日期控件及日期合法性校验,可以严格的日期输入的正确性。
  项目提交时,受到了客户的质疑,认为不是常规的方式,请问各位的项目中,是否也有用varchar存数日期型的???


varchar存数日期型的优势:
1、读去数据到页面显示时,不需要to_char的转换。
2、页面数据保存到数据库时,也省去了to_date的转换。

varchar存数日期型依旧满足:
1、排序:字符串排序(格式固定)
2、区间查找:字符串区间查找(格式固定)
3、计算N日前等操作:to_date转换后即可操作
4、数据合法性检查:页面严格控制(无论是否用varchar均需要控制)


...全文
941 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuyu1980 2006-06-21
  • 打赏
  • 举报
回复
还没有结贴啊?
龙翔飞雪 2006-06-21
  • 打赏
  • 举报
回复
两个都支持~
但要是我设计系统的话,
我肯定用DateTime(或TimeStamp).

原因:
1.是时间就该用时间类型~
2.bind parameter可以直接传时间型的对象进SQL(比如C#的DateTime, Java的Date,TimeStamp)
3.在程序中处理C#的DateTime和Java的Date应该都不难吧~
4.用VarChar2的话,程序中要单独取得年,月,日,时,分,秒. 一定要用substring 的方法了, substring可能会报长度不正确的Exception哦~ (不过如果DB里的数据全部正确的话,那没事~)
但用时间类型就碰不到这个问题,因为select返回的结果也是时间型, 比如返回给C#就是DateTime类型.
ragweed_wg 2006-06-21
  • 打赏
  • 举报
回复
不得不为保存、展现不断的to_date、to_char,其它丰富的函数却也用不上,对于效率的问题,确实是date型的优点,但对于一个SQL,数据类型对效率的影响相比表关联、IN要小得多……有没有支持varchar2的兄弟??
yuyu1980 2006-06-19
  • 打赏
  • 举报
回复
直接保存为date()类型 查询的时候可以根据需要处理
boydgmx 2006-06-18
  • 打赏
  • 举报
回复
如果你只需要保留到日期,不需要分秒的话,也可以用varchar2
ragweed_wg 2006-06-16
  • 打赏
  • 举报
回复
没有支持的观点吗?毕竟省去了许多to_date、to_char的转换。在不需要对日期计算的情况下,省却了许多转换。
xiaoxiao1984 2006-06-15
  • 打赏
  • 举报
回复
直接用date类型,好处
1. 保存还是比较方便,直接to_date()即可;
2. 日期间比较比字符串比较快
3. 日期函数比较丰富,便于进行直接日期比较或其他操作;
如果是varchar 或者 varchar2 类型的话,在进行时间类型的查询的时候首先要进行类型转换,to_date()导致无法使用索引,数据量较大的时候需要建立函数索引来解决,在以后的维护方面增加负担

qiaozhiwei 2006-06-15
  • 打赏
  • 举报
回复
用date,如果对该字段进行计算什么的,比较方便,你说的排序什么的,你可以to_char在排序也是一样的吧
fjmingyang 2006-06-14
  • 打赏
  • 举报
回复
我有时也用varchar来保存日期,推荐用date,保存时对日期字符串to_date()下,就可以了,使用上并不麻烦
yqwd911 2006-06-14
  • 打赏
  • 举报
回复
還是直接用Date型比較好。
在Oracle中已經提供了豐富的轉化方式,to_char,to_date
而且還有很多日期型的函數可以直接使用。

最關鍵的是我認爲在數据存放和查詢上Date要比Varchar快。
Varchar是按位比較,而date是直接比較的。

在SQL server上好像日期的轉化函數不是很好
有很多人用Varchar取代Date存放
adeva 2006-06-14
  • 打赏
  • 举报
回复
建议:varchar全用varchar2代替,varchar以后会取消的!
保存日期最佳还是用DATA

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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