दूसरा अद्यतन:
अब मैं इसे हर संस्करण में काम कर रहा हूं:
select
*
from
Payroll
inner join
(
SELECT DATE(DATE_ADD('2012-10-05',
INTERVAL @i:[email protected]+14 DAY) ) AS dateP
FROM Payroll, (SELECT @i:=0) r
where @i < DATEDIFF(now(), date '2012-10-05')
) sq on Payroll.datestamp = sq.dateP
आपको बस क्वेरी के अंदर वेरिएबल को इनिशियलाइज़ करना है।
अद्यतन करें:
अजीब बात यह है कि यह मेरी स्थानीय मशीन पर बिना किसी समस्या के काम करता है (संस्करण 5.1.41-3ubuntu12.7-लॉग), लेकिन आपके SQLfiddle में नहीं।
set @i:= 0;
select
*
from
Payroll
inner join
(
SELECT DATE(DATE_ADD('2012-10-05',
INTERVAL @i:[email protected]+14 DAY) ) AS dateP
FROM Payroll
where @i < DATEDIFF(now(), date '2012-10-05')
) sq on Payroll.datestamp = sq.dateP
अद्यतन की समाप्ति
क्या आपने इसे इस तरह आजमाया है?
set @i:= 0;
SELECT distinct datestamp FROM payroll
WHERE STR_TO_DATE(datestamp, '%M, %d %Y %H:%i:%f') in (
SELECT DATE(ADDDATE('2012-10-05',
INTERVAL @i:[email protected]+14 DAY) ) AS dateP
FROM payroll
where @i < DATEDIFF(now(), date '2012-10-05')
)
;
मेरा अनुमान है, कि DATE()
फ़ंक्शन विफल हो जाता है, क्योंकि आप varchar
हैं (है ना?) तिथि आईएसओ प्रारूप में नहीं है। इसलिए आपको STR_TO_DATE()
use का उपयोग करना होगा समारोह।
STR_TO_DATE()
के सटीक उपयोग के लिए पढ़ें यहांए> और यहां . मैं माइक्रोसेकंड भाग के बारे में निश्चित नहीं हूं।