日期:2014-05-18  浏览次数:21309 次

Ms SQL Server中"出生日期"字段设置为什么类型(varchar 还是 datetime)好?
C# 编程对于实际录入时有时填写出生日期,有时空着出生日期

在mssql 中设定出生日期varchar 还是 datetime更好些.

设定出生日期 datetime ,当用户不填写出生日期如何处理好一些(不填就得为空)?

设定出生日期 varchar , 按出生日期排序,是否符合datetime的大小排列方式?

请帮着分析下两种数据类型作为出生日期的优缺点? 最好能给出具体的C#存取代码.


------解决方案--------------------
varchar

原因:字符串时间可以排序,不用来回转换格式。
------解决方案--------------------


datetime...

如果有这个字段查询。。。比如时间段查询(要查1980-1-1日到1990-1-1出生的人)。。用varchar会给你添不少乱

如果时间有时可以不填,你只需给定个默认值而已,比如没有输入生日的,生日字段都为"1900-01-01"

------解决方案--------------------

当然是datetime

varchar明显的没有格式,一个没有格式的输入必定会导致输出错误
------解决方案--------------------
探讨
datetime...

如果有这个字段查询。。。比如时间段查询(要查1980-1-1日到1990-1-1出生的人)。。用varchar会给你添不少乱

如果时间有时可以不填,你只需给定个默认值而已,比如没有输入生日的,生日字段都为"1900-01-01"

------解决方案--------------------
肯定是datetime了。就是用来存数日期的。
------解决方案--------------------
是个日期当然就优先用DateTime。日期格式其实是很灵活的,用char/varchar读写指不定会出什么乱子。
------解决方案--------------------
探讨

varchar

原因:字符串时间可以排序,不用来回转换格式。

------解决方案--------------------
不好意思,DATEtime,点错了引用
肯定是DateTime了
------解决方案--------------------
- - ! 我是新手。 我用的是 int 储存时间戳
------解决方案--------------------
汗,我以前设计数据库时,时间字段都是用的Varchar
感觉挺好用的
格式方面 不让用户自己输入日期,从DateTimePicker之类的控件上选择日期
如果是用户输入可以先用正则判断合法性
按时间段查询 只要用大于小于号就可以
默认值可以设置吧
------解决方案--------------------
public DateTime? BirthDate{get; set;}
用可空类型
------解决方案--------------------
数据库中还是 datetime 类型, datetime null
------解决方案--------------------
符串时间可以排序,不用来回转换格式。
------解决方案--------------------
探讨
datetime...

如果有这个字段查询。。。比如时间段查询(要查1980-1-1日到1990-1-1出生的人)。。用varchar会给你添不少乱

如果时间有时可以不填,你只需给定个默认值而已,比如没有输入生日的,生日字段都为"1900-01-01"

------解决方案--------------------
各有各的缺点,datetime在null的情况下,在页面显示什么“0001-00-00”之类的字符串 还得判断,在c#里如果为空的时候不能直接转换成datetime类型,要容错,要判断,如果你要转换成某个格式的话,还是得转换字符串类型....而varchar就是转换问题,相比我比较喜欢用varchar
------解决方案--------------------
datetime?
------解决方案--------------------
探讨

各有各的缺点,datetime在null的情况下,在页面显示什么“0001-00-00”之类的字符串 还得判断,在c#里如果为空的时候不能直接转换成datetime类型,要容错,要判断,如果你要转换成某个格式的话,还是得转换字符串类型....而varchar就是转换问题,相比我比较喜欢用varchar

------解决方案--------------------
如果为了查询速度快的话,你最好使用日期Ticks.

数据库对应的类型是bigint.
------解决方案--------------------
INT
------解决方案--------------------
datetime
------解决方案--------------------