2010-07-05 13 views
8

से वर्ष प्राप्त करें मुझे एक MySQL टाइमस्टैम्प फ़ील्ड से वर्ष निकालने में समस्या है।टाइमस्टैम्प एसक्यूएल

SELECT id FROM TABLE WHERE YEAR(creation_date) = 2010 

CREATE TABLE IF NOT EXISTS `pub_media` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `parent_id` int(11) DEFAULT NULL, 
    `title` text, 
    `filename` text, 
    `path` text, 
    `serv_path` text, 
    `type` enum('images','videos','files','audio','gallery') DEFAULT NULL, 
    `keywords` text, 
    `label_id` int(11) DEFAULT NULL, 
    `creation_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', 
    `update_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP, 
    `rank` int(11) NOT NULL DEFAULT '0', 
    `deleted` tinyint(1) NOT NULL DEFAULT '0', 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 

सर्वर संस्करण: 5.1.41 वहाँ एक टाइमस्टैम्प मैदान पर यह कार्रवाई करने की एक simalar रास्ता नहीं है मैं इसे एक datetime क्षेत्र इस पद्धति का उपयोग के साथ काम पाने में कामयाब रहे? मैं इस क्रिया को अपने SQL कथन में रखना चाहता हूं और यदि संभव हो तो इसे PHP या किसी अन्य स्क्रिप्टिंग भाषा में स्थानांतरित करने का प्रयास न करें।

उत्तर

9

आप क्या समस्या का सामना कर रहे हैं [[संपादित करें]] ने कहा, (, और कर सकते हैं आप अपने प्रश्न में CREATE TABLE का आउटपुट शामिल कर सकते हैं? यह MySQL 5.1.41-3ubuntu12.3 पर मेरे लिए काम करता है:

DROP TABLE IF EXISTS `table1`; 

CREATE TABLE `table1` (
    `id` int(11) NOT NULL auto_increment, 
    `ts` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB; 

INSERT INTO table1 (id) VALUES (1); 

SELECT * FROM table1; 
+----+---------------------+ 
| id | ts     | 
+----+---------------------+ 
| 1 | 2010-07-05 15:32:11 | 
+----+---------------------+ 

SELECT id FROM table1 WHERE YEAR(ts) = 2010; 
+----+ 
| id | 
+----+ 
| 1 | 
+----+ 
+0

हेक संख्या को अनुमोदित उत्तर पोस्ट देखें, मुझे नहीं पता कि यह मेरे डीबी पर क्यों काम नहीं कर रहा है। शायद क्योंकि मैं डीओ इंजन के रूप में InnoDB के बजाय MyISAM का उपयोग करता हूं? –

+0

मैंने अभी इसे माईसाम के साथ आजमाया है, और यह भी काम करता है। क्या आप अपना प्रश्न संपादित कर सकते हैं, और 'CREATE TABLE

' से आउटपुट शामिल कर सकते हैं? इसके अलावा, आप MySQL का किस संस्करण का उपयोग कर रहे हैं? – Mike

+0

दोनों अनुरोधों को जोड़ा गया –

5

उपयोग CAST समारोह :)

SELECT id FROM TABLE WHERE YEAR(CAST(creation_date AS DATE))=2010

CREATION_DATE टाइमस्टैम्प के साथ काम करना चाहिए

) के आसपास डाली

+0

मैं क्वेरी के बाद एक हो जाएगा मुझे यह त्रुटि मिल रही है: आपको अपने SQL वाक्यविन्यास में कोई त्रुटि है; 'query_date AS DATE) = 2010 के पास उपयोग करने के लिए सही वाक्यविन्यास के लिए आपके MySQL सर्वर संस्करण से मेल खाने वाले मैन्युअल की जांच करें और इस क्वेरी का उपयोग करते हुए पंक्ति 1 पर रैंक डीईएससी द्वारा हटाया गया = 0 ऑर्डर करें: चुनें आईडी, शीर्षक pub_media से शीर्षक वर्ष (CAST create_date AS DATE) = 2010 और हटाए गए = 0 रैंक द्वारा डीईसीसी mysql v। 5.1.41 –

+0

अरे आप लोग, यह काम नहीं कर रहा है, इसे खींचना बंद करें :) –

+0

CAST – dweeves

2

निम्नलिखित काम करता है ठीक है,

 
SELECT id FROM TABLE WHERE DATE_FORMAT(creation_date, "%Y") = "2010" 

डेटा को स्वरूपित करने से इस तरह प्रश्नों के लिए वास्तव में उपयोगी है, मैं इसे कई बार इस्तेमाल किया है उदाहरण के लिए 10 मिनट अंतराल तक डेटा तोड़ने के लिए ...

+0

किसी को सबसे तेज़ क्या करना चाहिए, DATE_FORMAT या TYPE कास्ट का उपयोग करके सबसे तेज़ करना चाहिए ..: p –

5

मेरे मामले में कलाकार() काम नहीं किया। से_unixtime() हालांकि किया था। अधिक पोर्टेबल तरह से तारीख या टाइमस्टैम्प से

SELECT id FROM TABLE WHERE YEAR(FROM_UNIXTIME(creation_date)) = 2010 
0
select * from table1 where year(ts) = 2016 and month(ts) = 9 
+2

यह उत्तर निम्न गुणवत्ता वाली समीक्षा कतार में बदल गया है, संभवतः क्योंकि आप कोड का कोई स्पष्टीकरण प्रदान नहीं करते हैं। यदि यह कोड प्रश्न का उत्तर देता है, तो अपने उत्तर में कोड समझाते हुए कुछ पाठ जोड़ने पर विचार करें। इस तरह, आप अधिक अपवर्तित होने की अधिक संभावना रखते हैं - और प्रश्नकर्ता को कुछ नया सीखने में मदद करें। – lmo

0

निकालें साल:

SELECT id FROM table WHERE EXTRACT(year FROM creation_date) = 2010 

MySQL, PostgreSQL, Oracle के साथ काम करता है ...

संबंधित मुद्दे