Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: Toán tử: BETWEEN trong SQLSever

  1. #1
    Ngày gia nhập
    11 2012
    Bài viết
    29

    Mặc định 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

  2. #2
    Ngày gia nhập
    08 2017
    Bài viết
    2,548

    SQL Code:
    1. ALTER proc [dbo].[InDanhSachTheoNgay]
    2.   @tungay smalldatetime, @denngay smalldatetime
    3. AS
    4. SELECT * FROM tblThiSinh WHERE NgayDangKy BETWEEN @tungay AND @denngay
    5. -- go

    nó bị gọi như thế nào?
    nếu cần, thì export tblThiSinh ra script, tôi test giúp cho.

  3. #3
    Ngày gia nhập
    01 2015
    Bài viết
    10

    Mình nghĩ câu truy vấn của bạn Monre cũng sẽ không lấy được đâu.
    Mình nghĩ vấn đề của bạn nó nằm ở chổ này.
    ALTER proc [dbo].[InDanhSachTheoNgay]
    @tungay smalldatetime, @denngay smalldatetime
    AS
    SELECT * FROM tblThiSinh WHERE (cast(ngaythang as date) Between '" & Format((@tungay), "MM/dd/yyyy") & "' and '" & Format((@denngay), "MM/dd/yyyy") & "')
    ==> Vấn đề nó nằm ở ngày và giờ nữa, nên bạn convert nó thành ngày thôi thì mình nghĩ nó sẽ chạy dc.

  4. #4
    Ngày gia nhập
    08 2017
    Bài viết
    2,548

    không phân biệt được câu truy vấn (query) với proc à phi long?
    - ALTER có nghĩa là sửa lại procedure cũ, thay bằng script mới.

  5. #5
    Ngày gia nhập
    01 2015
    Bài viết
    10

    ALTER proc [dbo].[InDanhSachTheoNgay]
    @tungay date, @denngay date
    AS
    SELECT * FROM tblThiSinh WHERE (cast(ngaythang as date) Between @tungay and @denngay)

  6. #6
    Ngày gia nhập
    08 2017
    Bài viết
    2,548

    Mặc định Toán tử: BETWEEN trong SQLSever

    quan trọng nó gọi như thế nào.

    cast / convert thì làm mất độ chính xác, nó cũng như chuyện tiếng Việt không dấu vậy.

  7. #7
    Ngày gia nhập
    01 2015
    Bài viết
    10

    Trích dẫn Nguyên bản được gửi bởi Monre Xem bài viết
    quan trọng nó gọi như thế nào.

    cast / convert thì làm mất độ chính xác, nó cũng như chuyện tiếng Việt không dấu vậy.
    Code của bạn.
    Code:
    ALTER proc [dbo].[InDanhSachTheoNgay]
      @tungay smalldatetime, @denngay smalldatetime
    as
    select * from tblThiSinh where NgayDangKy BETWEEN @tungay and @denngay
    Sao giống code này được.
    Code:
    ALTER proc [dbo].[InDanhSachTheoNgay]
    @tungay date, @denngay date
    AS
    SELECT * FROM tblThiSinh WHERE (cast(NgayDangKy as date) Between @tungay and @denngay)
    ==> code của bạn nó chỉ đúng với trường hợp cột NgayDangKy có kiểu dữ liệu là date
    ==> Còn nếu cột NgayDangKy có kiểu dữ liệu là datetime thì bạn sẽ gặp trường hợp giống chủ tip ngay.
    ==> nó cũng như chuyện tiếng Việt không dấu vậy ==> nó sẽ có trường hợp người đọc hiểu khác nghĩa ngay. hjhjhj.

  8. #8
    Ngày gia nhập
    08 2017
    Bài viết
    2,548

    Code của bạn, là bạn nào?

    code nên đặt trong tag_code, có chỉ định ngôn ngữ, nó dễ đọc hơn.

    Đừng ngộ nhận là cốt kiếc tôi viết / bạn viết, thuộc sở hữu của ai!

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn