sqlserver 2005: 如何设日期型列的默认值为空白( - - ),不想要1900.01.01 12:00:00 AM

时间:2022-05-23 09:55:47
我用VB做前端应用程序,从后端sqlserver读取数据,发现凡是没录入值的日期类型列,取出的值都是1900.01.01 12:00:00 AM,能不能把日期型的默认值设为空白(只有日期分隔符,如  -  -  或  .  .  )

14 个解决方案

#1


不行,除非设置为字符型

#2


如楼上,日期为“”时,默认值都为1900.01.01 12:00:00 AM,除非在你插入时,直接插入null。就没问题,

#3


sql中默认时间为:1900.01.01 12:00:00 AM

#4


谢谢各位的回复!
不过客户端一定是不能把未定日期显示为1900的,看来,在server端已没有办法了,只能在程序端加处理了,这无疑增加了处理的复杂度。

#5


可以在代码中处理 或者是 设置默认值。

#6


引用 5 楼 jiangnan641020 的回复:
可以在代码中处理 或者是 设置默认值。

谢谢回复
但是设默认值一定是行不通的,用户理解不了为什么他们没给一个项录入任何值,它就有一个莫明其妙的值。

#7


 Convert(Varchar(10),"你的时间字段",120)


只能这样整了,要么可以用smalldatetime类型试试

#8



declare @time datetime
select @time
--结果是null

http://hi.baidu.com/liuliangzhou/blog/item/efb797b337f6f2a1d8335adb.html

DateTime 类型有默认值,可以按上面的地址的方法,初始为空。

#9


引用楼主 needacoder 的帖子:
我用VB做前端应用程序,从后端sqlserver读取数据,发现凡是没录入值的日期类型列,取出的值都是1900.01.01 12:00:00 AM,能不能把日期型的默认值设为空白(只有日期分隔符,如  -  -  或  .  .  )

不行,但是,你可以考虑用字符串来存储日期.

#10


引用 9 楼 dawugui 的回复:
引用楼主 needacoder 的帖子:
我用VB做前端应用程序,从后端sqlserver读取数据,发现凡是没录入值的日期类型列,取出的值都是1900.01.01 12:00:00 AM,能不能把日期型的默认值设为空白(只有日期分隔符,如  -  -  或  .  .  ) 
 
不行,但是,你可以考虑用字符串来存储日期.


或者在前台显示时,把1900.01.01 12:00:00 AM显示为如  -  -  或  .  .  

#11


select case date when '1900-01-01' then '    -  -  ' else date end from tb

#12


那就在前台显示的时候控制

#13


强烈建议使用NULL值

#14


用NULL不就OK了~~

#1


不行,除非设置为字符型

#2


如楼上,日期为“”时,默认值都为1900.01.01 12:00:00 AM,除非在你插入时,直接插入null。就没问题,

#3


sql中默认时间为:1900.01.01 12:00:00 AM

#4


谢谢各位的回复!
不过客户端一定是不能把未定日期显示为1900的,看来,在server端已没有办法了,只能在程序端加处理了,这无疑增加了处理的复杂度。

#5


可以在代码中处理 或者是 设置默认值。

#6


引用 5 楼 jiangnan641020 的回复:
可以在代码中处理 或者是 设置默认值。

谢谢回复
但是设默认值一定是行不通的,用户理解不了为什么他们没给一个项录入任何值,它就有一个莫明其妙的值。

#7


 Convert(Varchar(10),"你的时间字段",120)


只能这样整了,要么可以用smalldatetime类型试试

#8



declare @time datetime
select @time
--结果是null

http://hi.baidu.com/liuliangzhou/blog/item/efb797b337f6f2a1d8335adb.html

DateTime 类型有默认值,可以按上面的地址的方法,初始为空。

#9


引用楼主 needacoder 的帖子:
我用VB做前端应用程序,从后端sqlserver读取数据,发现凡是没录入值的日期类型列,取出的值都是1900.01.01 12:00:00 AM,能不能把日期型的默认值设为空白(只有日期分隔符,如  -  -  或  .  .  )

不行,但是,你可以考虑用字符串来存储日期.

#10


引用 9 楼 dawugui 的回复:
引用楼主 needacoder 的帖子:
我用VB做前端应用程序,从后端sqlserver读取数据,发现凡是没录入值的日期类型列,取出的值都是1900.01.01 12:00:00 AM,能不能把日期型的默认值设为空白(只有日期分隔符,如  -  -  或  .  .  ) 
 
不行,但是,你可以考虑用字符串来存储日期.


或者在前台显示时,把1900.01.01 12:00:00 AM显示为如  -  -  或  .  .  

#11


select case date when '1900-01-01' then '    -  -  ' else date end from tb

#12


那就在前台显示的时候控制

#13


强烈建议使用NULL值

#14


用NULL不就OK了~~