Hỏi/ Thắc mắc - Toán tử: BETWEEN trong SQLSever | VN-Zoom | Cộng đồng Chia Sẻ Kiến Thức Công Nghệ và Phần Mềm Máy Tính

Adblocker detected! Please consider reading this notice.

We've detected that you are using AdBlock Plus or some other adblocking software which is preventing the page from fully loading.

We need money to operate the site, and almost all of it comes from our online advertising.

If possible, please support us by clicking on the advertisements.

Please add vn-z.vn to your ad blocking whitelist or disable your adblocking software.

×

Hỏi/ Thắc mắc Toán tử: BETWEEN trong SQLSever

E chào các bác. các bác cho e hỏi có bác nào gặp lỗi thiếu chính xác này như e ko e có SP: ALTER proc [dbo].[InDanhSachTheoNgay]
@tungay smalldatetime,@denngay smalldatetime
as
select * from tblThiSinh where NgayDangKy BETWEEN @tungay and @denngay

dữ liệu ngày 28/2/2019 e có đăng ký cho 3 thí sinh nhưng sao e vào in sanh sách e nhập từ ngày 1/2/2019 đến 28/2/2019 nó lại không lấy đc danh sách ngày đăng ký 28/2/2019. mà toán tử between là lấy cả 2 điểm bằng đầu cho đến điểm bằng cuối lỗi j vậy các bác
 

rimocchino

人生をシンプルにするのは心の平和を得る一番良い方法だ。
có nghĩa là các dữ liệu mà đăng kí trước 28/2/2019 vẫn lấy được ah ?
 
uhm
có nghĩa là các dữ liệu mà đăng kí trước 28/2/2019 vẫn lấy được ah ?
uhm trơớc 28/2/2019 vẫn lấy đc
 

lucius

Gà con
trước khi tạo câu hỏi thì bạn nên tự tìm kiếm bằng google trước cũng như tìm hiểu về những syntax đang sử dụng để hiểu nguyên nhân. thay vì ỷ lại và tạo những câu hỏi như này.


bettwen dùng để so sánh trong một khoảng giá trị. khi bạn cho input là 1/2/2019 - 28/2/2019
thì thực chất khi truy vấn, giá trị được so sánh sẽ là 1/2/2019 00:00:00 - 28/2/2019 00:00:00

vậy nếu bạn đăng kí vào thời gian 28/2/2019 13:00:00. giá trị này đã nằm ngoài khoảng giá trị bạn tìm kiếm rồi.

giải pháp thứ nhất là chuyển hết format của các tham số về Y-m-d. nhưng nếu vậy khi truy vấn sẽ không sử dụng được indexing => hiệu năng kém

giải pháp thứ 2 là thay đổi tham số đầu vào. thay vì query với 1/2/2019 - 28/2/2019 hãy query với 1/2/2019 00:00:00 - 29/2/2019 00:00:00 hoặc 1/2/2019 00:00:00 - 28/2/2019 23:59:59. cách này vẫn sử dụng được indexing để tăng hiệu năng truy vấn

mình không rõ có cách nào hay hơn không.
 

menu1a

Búa Gỗ Đôi
mình không rõ có cách nào hay hơn không.
có 1 cách đơn giản là to_char trước khi query bạn định dạng về dd/MM/yyyy thì sẽ query dc còn không thì như bác trên đã nói nó nằm ngoài khoảng dữ liệu nên ko thể ra kết quả đc.
Về index thì còn phụ thuộc vào cách đánh nữa đánh kiểu nào thì dùng điều kiện kiểu đó thôi
 

mayweather87

Búa Gỗ
trước khi tạo câu hỏi thì bạn nên tự tìm kiếm bằng google trước cũng như tìm hiểu về những syntax đang sử dụng để hiểu nguyên nhân. thay vì ỷ lại và tạo những câu hỏi như này.


bettwen dùng để so sánh trong một khoảng giá trị. khi bạn cho input là 1/2/2019 - 28/2/2019
thì thực chất khi truy vấn, giá trị được so sánh sẽ là 1/2/2019 00:00:00 - 28/2/2019 00:00:00

vậy nếu bạn đăng kí vào thời gian 28/2/2019 13:00:00. giá trị này đã nằm ngoài khoảng giá trị bạn tìm kiếm rồi.

giải pháp thứ nhất là chuyển hết format của các tham số về Y-m-d. nhưng nếu vậy khi truy vấn sẽ không sử dụng được indexing => hiệu năng kém

giải pháp thứ 2 là thay đổi tham số đầu vào. thay vì query với 1/2/2019 - 28/2/2019 hãy query với 1/2/2019 00:00:00 - 29/2/2019 00:00:00 hoặc 1/2/2019 00:00:00 - 28/2/2019 23:59:59. cách này vẫn sử dụng được indexing để tăng hiệu năng truy vấn

mình không rõ có cách nào hay hơn không.
cách nào thì cách nhưng phải đồng nhất kiểu đưa vào và lấy ra thì nó mới ra được chứ. Thớt này chưa tìm hiểu vấn đề đã đi hỏi ngay rồi, lười vc.
 


Top