Hướng dẫn how can i get data between two dates in mysql? - làm cách nào để lấy dữ liệu giữa hai ngày trong mysql?

Tôi đã lưu ngày đăng ký của người dùng dưới dạng DateTime, vì vậy ví dụ như 2011-12-06 10:45:36. Tôi đã chạy truy vấn này và tôi mong đợi mục này - 2011-12-06 10:45:36 - Sẽ được chọn:2011-12-06 10:45:36. I have run this query and I expected this item - 2011-12-06 10:45:36 - will be selected:

SELECT `users`.* FROM `users` WHERE created_at >= '2011-12-01' AND
created_at <= '2011-12-06'

Nhưng không. Tồn tại bất kỳ cách thanh lịch nào, làm thế nào để chọn mặt hàng này? Như một ý tưởng đầu tiên mà tôi có được giống như

SELECT users.* FROM users 
WHERE created_at >= '2011-12-01 00:00:00' 
AND created_at <= '2011-12-06 00:00:00'
1, nhưng điều này trông không đẹp lắm.

Hướng dẫn how can i get data between two dates in mysql? - làm cách nào để lấy dữ liệu giữa hai ngày trong mysql?

Mureinik

283K51 Huy hiệu vàng290 Huy hiệu bạc327 Huy hiệu đồng51 gold badges290 silver badges327 bronze badges

Hỏi ngày 10 tháng 12 năm 2011 lúc 17:11Dec 10, 2011 at 17:11

user984621user984621user984621

44.7K71 Huy hiệu vàng214 Huy hiệu bạc390 Huy hiệu đồng71 gold badges214 silver badges390 bronze badges

Vấn đề của bạn là phiên bản ngắn của ngày sử dụng Midnight làm mặc định. Vì vậy, truy vấn của bạn thực sự là:

SELECT users.* FROM users 
WHERE created_at >= '2011-12-01 00:00:00' 
AND created_at <= '2011-12-06 00:00:00'

Đây là lý do tại sao bạn không thấy kỷ lục trong 10:45.

Thay đổi nó thành:

SELECT users.* FROM users 
WHERE created_at >= '2011-12-01' 
AND created_at <= '2011-12-07'

Bạn cũng có thể dùng:

SELECT users.* from users 
WHERE created_at >= '2011-12-01' 
AND created_at <= date_add('2011-12-01', INTERVAL 7 DAY)

Trong đó sẽ chọn tất cả người dùng trong cùng một khoảng thời gian bạn đang tìm kiếm.

Bạn cũng có thể tìm thấy giữa các toán tử dễ đọc hơn:

SELECT users.* from users 
WHERE created_at BETWEEN('2011-12-01', date_add('2011-12-01', INTERVAL 7 DAY));

Đã trả lời ngày 10 tháng 12 năm 2011 lúc 17:18Dec 10, 2011 at 17:18

1

SELECT users.* FROM users WHERE created_at BETWEEN '2011-12-01' AND '2011-12-07';

Đã trả lời ngày 10 tháng 12 năm 2011 lúc 17:19Dec 10, 2011 at 17:19

Marek Příhodamarek PříhodaMarek Příhoda

10,9k3 Huy hiệu vàng38 Huy hiệu bạc52 Huy hiệu Đồng3 gold badges38 silver badges52 bronze badges

Bạn cần sử dụng '2011-12-07' làm điểm cuối cùng là ngày không có thời gian mặc định đến thời gian 00:00:00.

Vì vậy, những gì bạn đã thực sự viết được giải thích là:

 SELECT users.* 
 FROM   users
 WHERE  created_at >= '2011-12-01 00:00:00' 
   AND  created_at <= '2011-12-06 00:00:00'

Và dấu thời gian của bạn là: 2011-12-06 10:45:36 không nằm giữa những điểm đó. Thay đổi điều này quá:
Change this too:

 SELECT users.* 
 FROM   users
 WHERE  created_at >= '2011-12-01'  -- Implied 00:00:00
   AND  created_at <  '2011-12-07'  -- Implied 00:00:00 and smaller than 
                                   --                  thus any time on 06

Đã trả lời ngày 10 tháng 12 năm 2011 lúc 17:17Dec 10, 2011 at 17:17

Hướng dẫn how can i get data between two dates in mysql? - làm cách nào để lấy dữ liệu giữa hai ngày trong mysql?

Martin Yorkmartin YorkMartin York

250K83 Huy hiệu vàng324 Huy hiệu bạc544 Huy hiệu đồng83 gold badges324 silver badges544 bronze badges

2

Một cách khác là sử dụng chức năng

SELECT users.* FROM users 
WHERE created_at >= '2011-12-01 00:00:00' 
AND created_at <= '2011-12-06 00:00:00'
2 trên toán hạng bên trái như hình bên dưới

SELECT users.* FROM users WHERE DATE(created_at) BETWEEN '2011-12-01' AND '2011-12-06'

Đã trả lời ngày 24 tháng 2 năm 2017 lúc 17:43Feb 24, 2017 at 17:43

Bạn đã thử trước và sau hơn là> = và

Đã trả lời ngày 10 tháng 12 năm 2011 lúc 17:14Dec 10, 2011 at 17:14

VextorspaceveXtorspacevextorspace

8422 Huy hiệu vàng10 Huy hiệu bạc24 Huy hiệu đồng2 gold badges10 silver badges24 bronze badges

1

Tìm kiếm

SELECT users.* FROM users 
WHERE created_at >= '2011-12-01 00:00:00' 
AND created_at <= '2011-12-06 00:00:00'
3 sẽ tìm kiếm bất kỳ hồ sơ nào được tạo vào hoặc trước nửa đêm ngày 2011-12-06. Bạn muốn tìm kiếm
SELECT users.* FROM users 
WHERE created_at >= '2011-12-01 00:00:00' 
AND created_at <= '2011-12-06 00:00:00'
4.

Hướng dẫn how can i get data between two dates in mysql? - làm cách nào để lấy dữ liệu giữa hai ngày trong mysql?

Nawin

1.6141 Huy hiệu vàng13 Huy hiệu bạc22 Huy hiệu đồng1 gold badge13 silver badges22 bronze badges

Đã trả lời ngày 10 tháng 12 năm 2011 lúc 17:16Dec 10, 2011 at 17:16

Hướng dẫn how can i get data between two dates in mysql? - làm cách nào để lấy dữ liệu giữa hai ngày trong mysql?

Brian Hooverbrian HooverBrian Hoover

7.7932 Huy hiệu vàng27 Huy hiệu bạc41 Huy hiệu đồng2 gold badges27 silver badges41 bronze badges

0

Có thể sử dụng ở giữa tốt hơn. Nó hoạt động cho tôi để có được phạm vi sau đó lọc nó

Đã trả lời ngày 10 tháng 12 năm 2011 lúc 17:14Dec 10, 2011 at 17:14

sys_debugsys_debugsys_debug

VextorspaceveXtorspace17 gold badges67 silver badges97 bronze badges

8422 Huy hiệu vàng10 Huy hiệu bạc24 Huy hiệu đồng

Tìm kiếm

SELECT users.* FROM users 
WHERE created_at >= '2011-12-01 00:00:00' 
AND created_at <= '2011-12-06 00:00:00'
3 sẽ tìm kiếm bất kỳ hồ sơ nào được tạo vào hoặc trước nửa đêm ngày 2011-12-06. Bạn muốn tìm kiếm
SELECT users.* FROM users 
WHERE created_at >= '2011-12-01 00:00:00' 
AND created_at <= '2011-12-06 00:00:00'
4.

SELECT DATE(timestamp_field) as date FROM stocks_annc WHERE DATE(timestamp_field) >= '2017-09-05' AND DATE(timestamp_field) <= '2017-09-09'

Nawin

1.6141 Huy hiệu vàng13 Huy hiệu bạc22 Huy hiệu đồng A better solution would be this. It would make sure that it uses the index if any exists.

SELECT users.* FROM users 
WHERE created_at >= '2011-12-01 00:00:00' 
AND created_at <= '2011-12-06 00:00:00'
0

Đã trả lời ngày 10 tháng 12 năm 2011 lúc 17:16

Brian Hooverbrian HooverSep 9, 2017 at 7:26

Hướng dẫn how can i get data between two dates in mysql? - làm cách nào để lấy dữ liệu giữa hai ngày trong mysql?

7.7932 Huy hiệu vàng27 Huy hiệu bạc41 Huy hiệu đồngKoushik Das

Có thể sử dụng ở giữa tốt hơn. Nó hoạt động cho tôi để có được phạm vi sau đó lọc nó3 gold badges45 silver badges39 bronze badges

Làm cách nào để lấy dữ liệu giữa hai ngày trong SQL?

Bạn có thể sử dụng chức năng Dateadd của SQL.Điều này sẽ trả về ID 1,2,3,4.Chúng tôi đang thực hiện một dateadd kép;Đầu tiên là thêm một ngày vào phần cuối hiện tại, nó sẽ là 2012-03-28 00:00:00, sau đó bạn trừ một giây để thực hiện ngày kết thúc 2012-03- 27 23:59:59.use the dateadd function of SQL. This will return ID 1,2,3,4. We are doing a double Dateadd ; the first is to add a day to the current endDate , it will be 2012-03-28 00:00:00, then you subtract one second to make the end date 2012-03- 27 23:59:59.

Làm cách nào để vượt qua phạm vi ngày trong truy vấn SQL?

Chọn * từ cá nhân nơi sinh_date_time giữa '2000-01-01 00:00:00' và '2002-09-18 12:00:00';