मैं इस प्रारूप में टाइम स्टैम्प का उपयोग कर रहा हूँ

    date_default_timezone_set('Asia/Manila');
    $date= date('F d, Y');
    $time= date('h:i:s A');

और यह इस तरह डेटा बचाता है

November 5, 2019 12:46:03 AM

अब, मैं मासिक डेटा, साप्ताहिक और वार्षिक डेटा प्राप्त करना और प्रतिध्वनित करना चाहता हूं।

मैंने LIKE '$date%' का उपयोग करने की कोशिश की, लेकिन जब साप्ताहिक की बात आती है तो मैं इसे काम नहीं कर सकता।

इस तिथि के मामले में, मैं 5 नवंबर, 2019 से डेटा प्राप्त करना चाहता हूं और छह दिन पहले (इसे एक सप्ताह बनाकर) मैंने मासिक और वार्षिक को दूसरे कॉलम में सहेजकर और अपने स्टेटमेंट में इसका उपयोग करके हल किया, लेकिन मुझे पता नहीं साप्ताहिक डेटा प्राप्त करने में यह कैसे करें

2
reve berces 11 नवम्बर 2019, 21:00
क्षमा करें, मुझे लगता है कि यह प्रश्न अभी भी थोड़ा अस्पष्ट है। क्या आप जो खोज रहे हैं उस पर अधिक स्पष्टता प्रदान कर सकते हैं? आप जिस डेटा के साथ काम कर रहे हैं वह कहां है? क्या यह आपकी मदद कर सकता है? stackoverflow.com/questions/8544438/…< /ए>
 – 
richyen
11 नवम्बर 2019, 21:06
1
ऐसा करने के लिए आपको MySQL के बिल्ट इन TIMESTAMP, DATE, या DATETIME फ़ील्ड का उपयोग करना चाहिए। VARCHAR में स्टोर करना इसे बेहद मुश्किल बना देता है। जिस प्रारूप में आपको इसे स्टोर करना चाहिए वह है yyyy-mm-dd hh:mm:ss -- उस समय आप WHERE my_date_field > 2014 आदि जैसे प्रश्नों का उपयोग कर सकते हैं .. या WHERE my_filed BETWEEN .. अधिक आसान प्रश्नों के लिए बनाना .. इसके विपरीत, यदि आपको मानव पठनीय प्रारूप की आवश्यकता है, तो बस डीबी में varchar में एक फ़ील्ड जोड़ें ताकि आपके पास MySQL प्रारूप और स्ट्रिंग प्रारूप दोनों हों।
 – 
Zak
11 नवम्बर 2019, 21:09
क्या आप timestamp प्रकार का उपयोग कर रहे हैं? ऐसा लगता है कि आपके डीबी में सादा पाठ है, जो अनुशंसित नहीं है। timestamp का प्रयोग करें और DAYOFWEEK() पर एक नजर डालें
 – 
Islingre
11 नवम्बर 2019, 21:10
1
क्या आप कृपया इसके लिए कोड प्रदान कर सकते हैं, यह मूल रूप से मेरे प्रोफेसर ने हमें सिखाया है इसलिए मेरे पास काम करने के लिए बहुत कुछ नहीं है
 – 
reve berces
11 नवम्बर 2019, 21:12

3 जवाब

सबसे बढ़िया उत्तर

ऐसा लगता है कि आप तारीखों को तार के रूप में संग्रहित कर रहे हैं। बस मत करो। यदि आपके पास तिथियां हैं, तो उन्हें अपने डेटाबेस में संग्रहीत करने के लिए प्रासंगिक डेटाटाइप का उपयोग करें: MySQL में, आप datetime डेटाटाइप चाहते हैं।

Php में, आप फॉर्मेट स्पेसिफायर 'Y-m-d H:i:s' के साथ एक उचित MySQL डेटाटाइम जेनरेट कर सकते हैं।

इस सेटअप के साथ, आप जिस फ़िल्टर की तलाश कर रहे हैं उसे लागू करना आसान है:

 mydate >= '2019-11-05' - interval 6 day and mydate <= '2019-11-05'
3
GMB 11 नवम्बर 2019, 21:09
1
मैंने इसे अपने डेटाबेस में VARCHAR में सहेजा, फिर इसे VALUE(..,'$date $time',...) का उपयोग करके डेटाबेस में डाला।
 – 
reve berces
11 नवम्बर 2019, 21:15
1
@Remaster: जैसा मैंने कहा, बस मत करो। इसके बजाय एक datetime कॉलम बनाएं, एक उचित MySQL तिथि उत्पन्न करने के लिए date('Y-m-d H:i:s') जैसे php एक्सप्रेशन का उपयोग करें, फिर इसे अपने डेटाबेस में डालें।
 – 
GMB
11 नवम्बर 2019, 21:17
1
क्या मुझे अपने कथन में "mydate" या मेरी डेटाबेस तालिका के कॉलम नाम का उपयोग करना चाहिए?
 – 
reve berces
11 नवम्बर 2019, 21:20
mydate का मतलब आपके datetime कॉलम के नाम से है, आप इसे उस कॉलम के असली नाम से बदल सकते हैं।
 – 
GMB
11 नवम्बर 2019, 21:22
स्वागत है @Remaster! खुशी है कि इससे मदद मिली।
 – 
GMB
11 नवम्बर 2019, 21:48

ऊपर मेरी टिप्पणियों के अनुसार .. मैं एक उदाहरण के साथ आपके अनुरोध का उत्तर दे रहा हूं ..

मैंने आपके साथ खेलने के लिए एक मूल तालिका और सम्मिलित विवरण बनाया है ..

CREATE TABLE `your_db`.`times` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `mysql_timestamp` TIMESTAMP NULL,
  `hr_timestamp` VARCHAR(45) NULL,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `id_UNIQUE` (`id` ASC));

कुछ नमूना डेटा डालें:

INSERT INTO `your_db`.`times` (`mysql_timestamp`, `hr_timestamp`) VALUES ('2018-10-07 11:58:46', 'IE Oct 7, 2018');
INSERT INTO `your_db`.`times` (`mysql_timestamp`, `hr_timestamp`) VALUES ('2018-11-07 11:58:46', 'IE Oct 7, 2018');
INSERT INTO `your_db`.`times` (`mysql_timestamp`, `hr_timestamp`) VALUES ('2018-12-07 11:58:46', 'IE Oct 7, 2018');
INSERT INTO `your_db`.`times` (`mysql_timestamp`, `hr_timestamp`) VALUES ('2019-01-07 11:58:46', 'IE Oct 7, 2018');
INSERT INTO `your_db`.`times` (`mysql_timestamp`, `hr_timestamp`) VALUES ('2019-02-07 11:58:46', 'IE Oct 7, 2018');
INSERT INTO `your_db`.`times` (`mysql_timestamp`, `hr_timestamp`) VALUES ('2019-03-07 11:58:46', 'IE Oct 7, 2018');
INSERT INTO `your_db`.`times` (`mysql_timestamp`, `hr_timestamp`) VALUES ('2019-04-07 11:58:46', 'IE Oct 7, 2018');
INSERT INTO `your_db`.`times` (`mysql_timestamp`, `hr_timestamp`) VALUES ('2019-04-07 11:58:46', 'IE Oct 7, 2018');
INSERT INTO `your_db`.`times` (`mysql_timestamp`, `hr_timestamp`) VALUES ('2019-05-07 11:58:46', 'IE Oct 7, 2018');
INSERT INTO `your_db`.`times` (`mysql_timestamp`, `hr_timestamp`) VALUES ('2019-06-07 11:58:46', 'IE Oct 7, 2018');
INSERT INTO `your_db`.`times` (`mysql_timestamp`, `hr_timestamp`) VALUES ('2019-07-07 11:58:46', 'IE Oct 7, 2018');
INSERT INTO `your_db`.`times` (`mysql_timestamp`, `hr_timestamp`) VALUES ('2019-08-07 11:58:46', 'IE Oct 7, 2018');

YEAR तक डेटा प्राप्त करने का एक उदाहरण होगा:

SELECT * FROM your_db.times WHERE YEAR(mysql_timestamp) = 2018;

किसी विशिष्ट MONTH को चुनने का एक उदाहरण:

SELECT * FROM your_db.times WHERE MONTH(mysql_timestamp) = 04;

BETWEEN तिथियों को चुनने का उदाहरण:

SELECT * FROM your_db.times WHERE mysql_timestamp BETWEEN '2018-12-01 00:00:00' AND '2019-04-30 00:00:00'

आप LT EQUAL और GT पैरामीटर का भी उपयोग कर सकते हैं .. IE:

SELECT * FROM your_db.times WHERE mysql_timestamp > '2018-12-01 00:00:00'

SELECT * FROM your_db.times WHERE mysql_timestamp <= '2018-12-01 00:00:00'
2
Zak 11 नवम्बर 2019, 21:34
1
धन्यवाद, मैं इसके बारे में और जानने के लिए इसके साथ खेलूंगा। दूसरे उत्तर ने मेरी समस्या हल कर दी लेकिन मैंने आपको ऊपर उठाया। धन्यवाद
 – 
reve berces
11 नवम्बर 2019, 21:40