Pertanyaan Query MySQL untuk memilih data dari minggu lalu?


Hai, saya memiliki tabel dengan bidang tanggal dan beberapa informasi lainnya. Saya ingin memilih semua entri dari minggu lalu, (minggu mulai dari hari Minggu).

nilai tabel:

id  date
2   2011-05-14 09:17:25
5   2011-05-16 09:17:25
6   2011-05-17 09:17:25
8   2011-05-20 09:17:25
15  2011-05-22 09:17:25

Saya ingin memilih semua id dari minggu lalu, output yang diharapkan adalah 5, 6, 8. (id 2 tidak dalam minggu lalu, dan id 15 dalam minggu ini.)

Bagaimana cara menulis dan SQL Query untuk hal yang sama.


75
2018-05-22 18:42


asal


Jawaban:


SELECT id FROM tbl
WHERE date >= curdate() - INTERVAL DAYOFWEEK(curdate())+6 DAY
AND date < curdate() - INTERVAL DAYOFWEEK(curdate())-1 DAY

101
2018-05-22 19:01



select id from tbname
where date between date_sub(now(),INTERVAL 1 WEEK) and now();

112
2017-08-22 18:46



Formulir yang disederhanakan:

Data minggu lalu: 

SELECT id FROM tbl


WHERE 
WEEK (date) = WEEK( current_date ) - 1 AND YEAR( date) = YEAR( current_date );

Data 2 minggu lalu: 

SELECT id FROM tbl


WHERE 
WEEK (date) = WEEK( current_date ) - 2 AND YEAR( date) = YEAR( current_date );

SQL Fiddle

http://sqlfiddle.com/#!8/6fa6e/2


12
2017-10-25 06:54



Anda dapat membuat perhitungan dalam php lalu menambahkannya ke kueri Anda:

$date = date('Y-m-d H:i:s',time()-(7*86400)); // 7 days ago

$sql = "SELECT * FROM table WHERE date <='$date' ";

sekarang ini akan memberikan tanggal untuk seminggu yang lalu


8
2018-05-22 18:52



SELECT id FROM table1
WHERE YEARWEEK(date) = YEARWEEK(NOW() - INTERVAL 1 WEEK)

Saya menggunakan fungsi YEARWEEK khusus untuk kembali ke seluruh minggu kalender sebelumnya (dibandingkan dengan 7 hari sebelum hari ini). YEARWEEK juga memungkinkan argumen kedua yang akan mengatur awal minggu atau menentukan bagaimana minggu pertama / terakhir tahun ini ditangani. YEARWEEK memungkinkan Anda menyimpan jumlah minggu untuk kembali / maju dalam satu variabel, dan tidak akan menyertakan jumlah minggu yang sama dari tahun sebelumnya / mendatang, dan itu jauh lebih pendek daripada sebagian besar jawaban lainnya di sini.


8
2017-08-26 08:06



Anda harus menghitung hari yang relatif hari ini adalah hari Minggu di middleware Anda (php, python, dll.) *

Kemudian,

select id
from table
where date >= "$sunday-date" + interval 7 DAY
  • mungkin cara untuk mendapatkan tanggal hari Minggu relatif terhadap hari ini di MySQL juga; itu bisa dibilang solusi yang lebih bersih jika tidak terlalu mahal untuk dilakukan

3
2018-05-22 18:49



Mungkin cara paling sederhana adalah:

SELECT id
FROM table
WHERE date >= current_date - 7

Selama 8 hari (mis. Senin - Senin)


3
2017-07-27 20:58



Itu bisa dalam satu baris:

SELECT * FROM table WHERE Date BETWEEN (NOW() - INTERVAL 7 DAY) AND NOW()

2
2017-09-08 07:23



Kueri di atas tidak akan berfungsi. Setelah where klausa, jika kita tidak bisa CAST nilai kolom, maka itu tidak akan berfungsi. Kamu harus cast nilai kolom.

misalnya.:

SELECT.....
WHERE CAST( yourDateColumn AS DATE ) > DATEADD( DAY, -7, CAST( GETDATE() AS DATE )

1
2018-04-05 14:35



Cara yang sederhana bisa seperti ini, ini adalah contoh nyata dari kode saya dan berfungsi dengan sempurna:

where("actions.created_at >= DATE_SUB(CURDATE(), INTERVAL 1 WEEK)")

1
2017-09-03 03:49