菜鸟求助~~关于SQL存储过程 再线等~~~~

wushuang4 2006-03-20 01:48:31
小弟拿到个数据库,里面的表中有日期字段,但是里面的数据类型是字符串,现在要把表的日期字段改成 日期型数据类型,要把每条记录的日期字段拿出来判断(如何判断)是否为合法的日期值,,如果不是,用“1900-01-01”替代,存储过程语句要怎么写????在线等!
...全文
84 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wushuang4 2006-03-20
  • 打赏
  • 举报
回复
Thank You!!!!!!!!!!!!
mx9958 2006-03-20
  • 打赏
  • 举报
回复
看到3钻的了! 猛
楼主你是要整个存储过程?
我写个麻烦点的,应该可以用.

CREATE PROCEDURE change_datetime AS
declare @id as int
declare @datetime as char(22)
declare #rep cursor for select [id],tempdate from table1
open #rep
fetch next from #rep into @id,@datetime
while @@fetch_status=0
begin
if isdate(@datetime) <> 1
begin
update table1 set tempdate=convert(datetime,'1900-01-01') where [id]=@id
end


fetch next from #rep into @id,@datetime
end
close #rep
deallocate #rep
GO
wushuang4 2006-03-20
  • 打赏
  • 举报
回复
楼上兄弟,分已经给完了,抱歉,对不起,非常感谢你,

guanjm 2006-03-20
  • 打赏
  • 举报
回复
update 表名 set 更新字段名=(case when isdate(更新字段名)=1 then 更新字段名 else '1900-101' end
)
--------------------------
wushuang4 2006-03-20
  • 打赏
  • 举报
回复
那样只能得出结果集,如何更新到原表呢
wushuang4 2006-03-20
  • 打赏
  • 举报
回复
楼上的大虾,能写全一点吗?
wudan8057 2006-03-20
  • 打赏
  • 举报
回复
select case when isdate(datefield) = 1
then convert(datetime,datefield)
else convert(datetime,'1900-01-01')
end
from mytable
zjcxc 元老 2006-03-20
  • 打赏
  • 举报
回复
case when isdate(日期字段)=1 then 日期字段 else '1900-101' end
wudan8057 2006-03-20
  • 打赏
  • 举报
回复
用isdate可以判断日期是否有效!

34,590

社区成员

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

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