不知道哪里有错误?谢谢!

dyeerp 2008-08-29 08:02:46
提示:从字符串转换为 datetime 时发生语法错误。下面哪里有错误,如何改?谢谢!或者这个SQL语句怎么写?满足下面的条件同时把@Fd转换成日期型、并月份永远是01月。
declare @m int,@F int,@Fd datetime
declare @FYear int,
@FPeriod int

select @FYear=2008,@FPeriod=8 --@FYear、,@FPeriod是可变的值,现在假设@FYear=2008,@FPeriod=8

if(@FPeriod-9)<0
begin
select @F=@FYear-1,@m=@FPeriod+3
end
else
begin
select @F=@FYear,@m=@FPeriod-9
end
select @Fd=cast((cast(@F as varchar(50))+cast(0 as varchar(50))+cast(@m as varchar(50))+cast('01' as varchar(50))) as datetime)
...全文
46 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2008-08-29
  • 打赏
  • 举报
回复
declare @m int,@F int,@Fd datetime 
declare @FYear int,
@FPeriod int

select @FYear=2008,@FPeriod=8 --@FYear、,@FPeriod是可变的值,现在假设@FYear=2008,@FPeriod=8

if (@FPeriod-9) < 0
begin
set @F = @FYear - 1
set @m = @FPeriod + 3
end
else
begin
set @F = @FYear
set @m = @FPeriod - 9
end
set @Fd = cast(cast(@F as varchar) + '-01-' + right('00'+cast(@m as varchar),2) as datetime)
-晴天 2008-08-29
  • 打赏
  • 举报
回复
declare @m int,@F int,@Fd datetime 
declare @FYear int,
@FPeriod int

select @FYear=2008,@FPeriod=8
set @fd=convert(datetime,cast(@fyear as varchar(4))+'01'+right('0'+cast(@fperiod as varchar),2))
select @fd

/*
-----------------------
2008-01-08 00:00:00.000

(1 行受影响)

*/
hyqwan11112 2008-08-29
  • 打赏
  • 举报
回复

declare @m int,@F int,@Fd datetime
declare @FYear int,
@FPeriod int

select @FYear=2008,@FPeriod=8 --@FYear、,@FPeriod是可变的值,现在假设@FYear=2008,@FPeriod=8

if(@FPeriod-9) <0
begin
select @F=@FYear-1,@m=@FPeriod+3
end
else

begin
select @F=@FYear,@m=@FPeriod-9
end

select @Fd=cast((cast(@F as varchar(50))+'-'+cast(@m as varchar(50))+'-'+cast('01' as varchar(50))) as datetime)

select @Fd

lussnailatnet 2008-08-29
  • 打赏
  • 举报
回复
declare @m int,@F int,@Fd datetime 
declare @FYear int,
@FPeriod int

select @FYear=2008,@FPeriod=8 --@FYear、,@FPeriod是可变的值,现在假设@FYear=2008,@FPeriod=8

if(@FPeriod-9) <0
begin
select @F=@FYear-1,@m=@FPeriod+3
end
else

begin
select @F=@FYear,@m=@FPeriod-9
end

select @Fd=cast((cast(@F as varchar(50))+'-'+cast(@m as varchar(50))+'-'+cast('01' as varchar(50))) as datetime)

select @Fd

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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