2015-07-16 15 views
5

Tôi đang sử dụng jooq trong dự án của mình và tôi cần truy vấn một số dữ liệu giữa hai ngày.JOOQ cách truy vấn giữa các ngày

Truy vấn sql trong đó sản xuất dữ liệu đúng là

select created_on from queue_token where created_on between '2015-07-16' and '2015-07-17' and token_queue_id=1; 

truy vấn jooq tương đương mà tôi đã viết ở dưới nhưng không đưa ra kết quả cần

create.select().from(com.database.tables.QueueToken.QUEUE_TOKEN) 
        .where(com.database.tables.QueueToken.QUEUE_TOKEN.TOKEN_QUEUE_ID.equal(1)) 
        .and(com.database.tables.QueueToken.QUEUE_TOKEN.CREATED_ON.between(new Timestamp(fromDate.getTime())).and(new Timestamp(toDate.getTime()))) 
        .fetch(); 

Truy vấn jooq sản xuất kết quả nhưng chỉ tạo các bản ghi khớp chính xác với fromDate. Vì vậy, về cơ bản nó không hoạt động trong phạm vi ngày.

Ai đó có thể trợ giúp ở đây?

+1

SQL gì là được tạo ra khi bạn gọi 'Query.getSQL (ParamType.INLINED)' trên truy vấn jOOQ? –

Trả lời

1

Tôi nghĩ rằng sự cố là đang chuyển dấu thời gian hoặc ngày và thời gian (Tôi không biết rõ java). Vì vậy, thay vì gửi e.x. "2015-07-16", bạn nhận được "2015-07-16 12:55:00" hoặc "1436187300".

Hãy thử gỡ lỗi giá trị new Timestamp(fromDate.getTime()) trước và nếu tôi đúng, hãy thử chuyển đổi giá trị đó thành ngày đơn giản mà không cần thời gian.

Để nhận được giá trị đúng ngày mà không cần thời gian bạn có thể sử dụng:

Các vấn đề liên quan