日期赋空值显示为1900-1-1?真不爽!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Nightyanlovecsharp 2008-03-26 10:33:27
/*用存储过程向用户通讯录信息表中插入数据*/
CREATE PROC InsertUserConInfo(
@ConTableName varchar(30),
@ConName varchar(30),
@ConAddress varchar(50),
@ConPhone varchar(20),
@ConEmail varchar(40),
@ConBirthday datetime,
@ConGroup varchar(20),
@ConMark varchar(50)
)
AS
DECLARE @str_sql varchar(500)
SET @str_sql='INSERT INTO '+ @ConTableName+'(ConName,ConAddress,ConPhone,ConEmail,ConBirthday,ConGroup,ConMark)
VALUES('''+@ConName+''','''+@ConAddress+''','''+@ConPhone+''','''+@ConEmail+''','''+convert(char(10),@ConBirthday,120)+''','''+@ConGroup+''','''+@ConMark+''')'
EXEC(@str_sql)
为什么我执行写成这样:
InsertUserConInfo 'table1','user1','','','','','',''
运行成功后再查询结果全都显示为1900-1-1.
但是我又这样写InsertUserConInfo 'table2','user2','','','',null,'',''
运行命令语法没问题,可是就不向表中插入数据。
没办法,我只有手动去企业管理器插入空的日期数据才没问题。
可是我要用程序来实现啊!怎么一个回事?解决一下!!!!!!!!!!!!!!!!!

...全文
493 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzy_love_sly 2008-03-26
  • 打赏
  • 举报
回复
260831750,
Nightyanlovecsharp 2008-03-26
  • 打赏
  • 举报
回复
能加你qq吗,楼上的大侠!告诉我吧!
wzy_love_sly 2008-03-26
  • 打赏
  • 举报
回复
--null结果
INSERT INTO a(ConName,ConAddress,ConPhone,ConEmail,ConBirthday,ConGroup,ConMark)
VALUES('b','c','d','e',null,'f','g')
--'2008-01-02'结果
INSERT INTO a(ConName,ConAddress,ConPhone,ConEmail,ConBirthday,ConGroup,ConMark)
VALUES('b','c','d','e','2008-01-02','f','g')

ok了请结帖,我下了,谢谢
wzy_love_sly 2008-03-26
  • 打赏
  • 举报
回复
CREATE PROC InsertUserConInfo( 
@ConTableName varchar(30),
@ConName varchar(30),
@ConAddress varchar(50),
@ConPhone varchar(20),
@ConEmail varchar(40),
@ConBirthday datetime,
@ConGroup varchar(20),
@ConMark varchar(50)
)
AS
DECLARE @str_sql varchar(500)
SET @str_sql='INSERT INTO '+ @ConTableName+'(ConName,ConAddress,ConPhone,ConEmail,ConBirthday,ConGroup,ConMark)
VALUES('''+@ConName+''','''+@ConAddress+''','''+@ConPhone+''','''+@ConEmail+''','
if @ConBirthday is null
set @str_sql=@str_sql+'null'
else
set @str_sql=@str_sql+''''+convert(char(10),@ConBirthday,120)+''''
set @str_sql=@str_sql+','''+@ConGroup+''','''+@ConMark+''')'
EXEC(@str_sql)


这个ok了,上面有点错误
wzy_love_sly 2008-03-26
  • 打赏
  • 举报
回复
CREATE PROC InsertUserConInfo( 
@ConTableName varchar(30),
@ConName varchar(30),
@ConAddress varchar(50),
@ConPhone varchar(20),
@ConEmail varchar(40),
@ConBirthday datetime,
@ConGroup varchar(20),
@ConMark varchar(50)
)
AS
DECLARE @str_sql varchar(500)
SET @str_sql='INSERT INTO '+ @ConTableName+'(ConName,ConAddress,ConPhone,ConEmail,ConBirthday,ConGroup,ConMark)
VALUES('''+@ConName+''','''+@ConAddress+''','''+@ConPhone+''','''+@ConEmail+''','
if @ConBirthday is null
set @str_sql=@str_sql+'null'
else
set @str_sql=@str_sql+'''convert(char(10),@ConBirthday,120)'''
set @str_sql=@str_sql+','''+@ConGroup+''','''+@ConMark+''')'
EXEC(@str_sql)


这样看看 ,该行了
wzy_love_sly 2008-03-26
  • 打赏
  • 举报
回复
哦 看懂了
Nightyanlovecsharp 2008-03-26
  • 打赏
  • 举报
回复
3楼的有问题啊!
IsNull只需要2个参数!
Nightyanlovecsharp 2008-03-26
  • 打赏
  • 举报
回复
我想默认设置为空,也就时我插入数据为''时候让其在数据库中显示为空,也就是没内容
因为我要用到TextBox控件在程序中,要从TextBox.Text传入到表中。
究竟改怎么写
wzy_love_sly 2008-03-26
  • 打赏
  • 举报
回复
DECLARE @str_sql varchar(500) 
SET @str_sql='INSERT INTO '+ @ConTableName+'(ConName,ConAddress,ConPhone,ConEmail,ConBirthday,ConGroup,ConMark)
VALUES('''+@ConName+''','''+@ConAddress+''','''+@ConPhone+''','''+@ConEmail+''','''+isnull(@ConBirthday,convert(char(10),@ConBirthday,120),null)+''','''+@ConGroup+''','''+@ConMark+''')'
EXEC(@str_sql)
piaoqifeng 2008-03-26
  • 打赏
  • 举报
回复
或者考虑你需要的默认格式,自己设置
piaoqifeng 2008-03-26
  • 打赏
  • 举报
回复
设置默认时间 ConBirthday default getdate()

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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