2013-11-21 3 views
17

अच्छा दिन।MySQL: इस सप्ताह के लिए रिकॉर्ड कैसे चुनें?

मैं sqlfiddle पर संरचना के साथ तालिका temp है:

id(int 11 primary key) 
name(varchar 100) 
name2(varchar 100) 
date(datetime) 

मैं (पर इस सप्ताह पर रिकॉर्ड मिलता है, उदाहरण के अब अगर 21.11.2013 मैं 24.11.2013 को 18.11.2013 पर सभी पंक्तियों चाहते हैं चाहते हैं सप्ताह)

अब मैं अगले एल्गोरिथ्म देखें:

1) obtain weekday 
2) calculate how many days ago was Monday 
3) calculate the date Monday 
4) calculate future date Sunday 
5) make a request on date 

मुझे बताओ कृपया, एक छोटा एल्गोरिथ्म मौजूद है (अधिमानतः क्वेरी MySQL में)?

जोड़ें प्रश्न: क्यों पर it query चयन रिकॉर्ड तिथि 2013/11/17 (रविवार) - 23.11.2013 (शनिवार) और कैसे पर तारीख 18.11.2013 (सोमवार) रिकॉर्ड मिलता है - 24.11.2013 (रविवार)?

क्वेरी:

select * from temp 
where yearweek(`date`) = yearweek(curdate()) 

धन्यवाद!

+0

आप कुछ करने की कोशिश की ??? – NoobEditor

+1

@Mayank आप नहीं देखते हैं? मैं एल्गोरिदम खोजने के लिए लिखते हैं। या एल्गोरिदम के साथ नीई लिखने कोय? –

+0

@YourCommonSense मुझे बताएं कृपया आप mysqli टैग क्यों हटाते हैं? –

उत्तर

42

उपयोग YEARWEEK():

SELECT * 
FROM your_table 
WHERE YEARWEEK(`date`, 1) = YEARWEEK(CURDATE(), 1) 
+1

पर जानूंगा श्रेष्ठ है? WEEKOFYEAR या सालाना? –

+2

'yearweek() 'के साथ आप एक अतिरिक्त पैरामीटर निर्दिष्ट कर सकते हैं जिस दिन एक सप्ताह शुरू होता है। –

+1

मुझे बताओ कृपया कारण है कि यह प्रश्न पर तारीख 2013/11/17 (रविवार) रिकॉर्ड का चयन करें - 23.11.2013 (शनिवार) और कैसे पर तारीख 18.11.2013 (सोमवार) रिकॉर्ड मिलता है - 24.11.2013 (रविवार)? –

6
SELECT id, name, date 
FROM table 
WHERE YEARWEEK(date)=YEARWEEK(NOW()); 
+1

क्या सबसे अच्छा है धन्यवाद? WEEKOFYEAR या सालाना? –

+5

YEWWEEK का उपयोग करें .. यदि आप WEEKOFYEAR का उपयोग करते हैं तो आपको पिछले वर्षों के रिकॉर्ड भी मिलेंगे .. मेरे उत्तर का संपादन – Ramesh

0

दिन, सप्ताह और महीने के उपयोग की रिकॉर्ड इस तरह का चयन के लिए:

function my_func($time, $your_date) { 
if ($time == 'today') { 
    $timeSQL = ' Date($your_date)= CURDATE()'; 
} 
if ($time == 'week') { 
    $timeSQL = ' YEARWEEK($your_date)= YEARWEEK(CURDATE())'; 
} 
if ($time == 'month') { 
    $timeSQL = ' Year($your_date)=Year(CURDATE()) AND Month(`your_date`)= Month(CURDATE())'; 
} 

$Sql = "SELECT * FROM your_table WHERE ".$timeSQL 
return $Result = $this->db->query($Sql)->result_array(); 
} 
0

आप विधि

SELECT DATE_FORMAT("2017-06-15", "%U"); 
का पालन करते हुए यह कर सकते हैं

सप्ताह की संख्या प्राप्त करें (0 से 0 से 53) कहां (रविवार 1 दिन और सोमवार सप्ताह के आखिरी दिन)

आपके लिए उपयोगी हो सकता है।

उदाहरण:

SELECT DISTINCT DATE_FORMAT('dates', '%U') AS weekdays FROM table_name; 
संबंधित मुद्दे