江湖救急呀!截取时间类型字符串长度

nameysf1 2012-08-07 04:38:16
ALTER PROCEDURE [dbo].[Proc_T_Novel_Topic_Add_ReCommand]
(
@BooksId int,
@UserId int,
@DateTime datetime,
@OrderType int
)
AS
declare @ID int

BEGIN

if (select count(*) from dbo.T_Books_Order where BooksId=@BooksId and substring([DateTime],0,10)=@DateTime and [DateTime] is not null)>0
begin
select 0 as id
end

else

begin
insert into dbo.T_Books_Order (UserId,OrderType,BooksId,[DateTime],Status)
values(@UserId,@OrderType,@BooksId,@DateTime,1)

select 1 as id

end
END
不对呀
我的意思就是 用一个已知的时间 去比较数据库里的时间 就想取 年月日 说以想截取 年月日 作比较 请大神们 指点迷津
...全文
219 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nameysf1 2012-08-07
  • 打赏
  • 举报
回复
谢谢各位大神
nameysf1 2012-08-07
  • 打赏
  • 举报
回复
谢谢各位大神
nameysf1 2012-08-07
  • 打赏
  • 举报
回复
呵呵 谢谢 各位大神 我是刚学着用存储过程 小弟我 刚入行没多长时间
  • 打赏
  • 举报
回复
if datediff(day,convert(varchar(10),dt1,120),dt2)=0
print '日期一样'
else
print '日期不一样'
jxqn_liu 2012-08-07
  • 打赏
  • 举报
回复
将日期转字符串可以这样

Select convert(varchar(10), getdate(), 121) --2012-08-07


你上面当然不对了

substring([DateTime],0,10)=@DateTime

substring([DateTime],0,10) --这里是字符串了
@DateTime --你这是日期型

改为

substring([DateTime],0,10)=substring(@DateTime,0,10)
或者
convert(varchar(10), [DateTime], 121) = convert(varchar(10), @DateTime, 121)

这样试试
icebbb34 2012-08-07
  • 打赏
  • 举报
回复

convert(datetime,convert(varchar,[DateTime],112)) =@DateTime
孤独加百列 2012-08-07
  • 打赏
  • 举报
回复

ALTER PROCEDURE [dbo].[Proc_T_Novel_Topic_Add_ReCommand]
(
@BooksId int,
@UserId int,
@DateTime datetime,
@OrderType int
)
AS
declare @ID int

BEGIN

if (select count(*) from dbo.T_Books_Order where BooksId=@BooksId and CONVERT(VARCHAR(10),[DateTime],120)=CONVERT(VARCHAR(10),@DateTime,120) and [DateTime] is not null)>0
begin
select 0 as id
end

else

begin
insert into dbo.T_Books_Order (UserId,OrderType,BooksId,[DateTime],Status)
values(@UserId,@OrderType,@BooksId,@DateTime,1)

select 1 as id

end
END

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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