Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

T_SQL cursor update time value

15:50 24-11-2017 602 lượt xem 5 bình luận 14:52 29-11-2017

declare @timestr date, @rndtime time
DECLARE listid CURSOR FOR
select TimeStr from CheckInOut where CAST(timestr as DATE) between '2017-07-1' and '2017-07-29'
and CAST(timestr as Time) between '19:30:00' and '22:00:00'
OPEN listid
FETCH FROM listid INTO @timestr
WHILE @@FETCH_STATUS = 0
BEGIN
set rndtime=CONVERT(VARCHAR, DATEADD(MINUTE, CAST(30 * RAND() AS INT), CONVERT(TIME, '07:00')), 114
set timestr=rndtime
FETCH NEXT FROM listid into @timestr
END
CLOSE listid
DEALLOCATE listid


Đoạn code trên là để cập nhật giá trị giờ trong cột timestr thành giá trị giờ ngẫu nhiên trong khoảng 7h đến 7h30

Thỏa mãn điều kiện trong khoảng thời gian từ 1-7-2017 đến 29-7-2017, khoảng thời gian từ 19:30 đến 22:00

Nhưng nó không chạy được và báo lỗi

Xin vui lòng kiểm tra tôi bị sai chỗ nào. Vui lòng xem hình

link data va loi

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
꧁༒Hell Demons༒꧂ đã bình luận 20:47 26-11-2017

Không cần thiết phải dùng cursor trong case trên!!!

doanbg2009 đã bình luận 19:09 24-11-2017

Bạn sửa 2 dòng này:

select TimeStr from CheckInOut where CAST(timestr as DATE) between '2017-07-1' and '2017-07-29'
and CAST(timestr as Time) between '19:30:00' and '22:00:00'

Thành dòng như này:

select TimeStr from CheckInOut where timestr between '20170701 19:30:00' and '20170729 22:00:00'

cái này đúng với trường TimeStr là kiểu varchar dạng datetme hoặc kiểu dữ liệu là datetime.

K9 SuperAdmin, KquizAdmin, KquizAuthor đã bình luận 16:27 24-11-2017

link chết bạn ơi

cái beetwen dùng cho ngày tháng liệu có chính xác?

Câu hỏi mới nhất