Hỏi đáp

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

T_SQL cursor update time value

7 năm trước 635 lượt xem 5 bình luận 7 năm trước

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 7 năm trước

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

doanbg2009 đã bình luận 7 năm trước

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 7 năm trước

link chết bạn ơi

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

Bài viết
0
Câu hỏi
2
Bình luận
2