Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
T_SQL cursor update time value
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
Không cần thiết phải dùng cursor trong case trên!!!
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.
link chết bạn ơi
cái beetwen dùng cho ngày tháng liệu có chính xác?