Dưới dạng offer_date
là một số và có độ chính xác thấp hơn so với ngày thực của bạn, điều này có thể hoạt động ...
- Chuyển đổi ngày thực của bạn thành một chuỗi có định dạng YYYYMM
- Chuyển đổi giá trị đó thành INT
- So sánh kết quả với bạn offer_date
của bạn
SELECT
*
FROM
offers
WHERE
offer_date = (SELECT CAST(to_char(create_date, 'YYYYMM') AS INT) FROM customers where id = '12345678')
AND offer_rate > 0
Ngoài ra, bằng cách thực hiện tất cả các thao tác trên create_date
bạn chỉ thực hiện xử lý trên một giá trị.
Ngoài ra, bạn có thao túng offer_date
không bạn sẽ không thể sử dụng bất kỳ chỉ mục nào trên trường đó và do đó buộc QUÉT thay vì XEM.