2013-01-24 10 views
19

में वर्ष बदलना मेरे पास मानक mysql दिनांक प्रकार में संग्रहीत हमारे डेटाबेस में तिथियों का एक गुच्छा है।mysql दिनांक

मूल तिथि के बावजूद, मैं एक साल 2013 तक कैसे गुप्त कर सकता हूं।

तो यदि कोई तिथि 200 9-01-01 है तो यह 2013-01-01 होगी, लेकिन अगर यह 2012-01-04 है, तो यह 2013-01-14 में परिवर्तित हो जाएगा।

मैं लगा इसे सरल और स्पष्ट हो जाएगा, लेकिन मैं इसे समझ नहीं सकता =/

उत्तर

46

कि सरल है:

DATETIME के ​​लिए

:

UPDATE table_name 
SET date_col=DATE_FORMAT(date_col,'2013-%m-%d %T'); 

DATE के लिए:

UPDATE table_name 
SET date_col=DATE_FORMAT(date_col,'2013-%m-%d'); 
+0

बिल्कुल सही। धन्यवाद! – Andelas

6
UPDATE tableName 
SET dateColumn = dateColumn + INTERVAL 4 YEAR 

दूसरा रास्ता यह श्रेणीबद्ध करने के लिए है,

UPDATE Table1 
SET DateColumn = CONCAT(YEAR(CURDATE()), '-', DATE_FORMAT(dateColumn, '%m-%d')) 
1

तो इसकी एक दिनांक फ़ील्ड:

UPDATE table_name SET date_field_name = CONCAT("2013", RIGHT(date_field_name,6)); 

तो इसकी एक तिथि समय क्षेत्र:

UPDATE table_name SET date_field_name = CONCAT("2013", RIGHT(date_field_name,15)); 
1

खोज से वर्तमान दिनांक 2013 था, मैं समझता हूँ आप तारीख में चालू वर्ष के लिए सेट करना चाहते हैं कि।

UPDATE table_name SET date_col=DATE_FORMAT('2013-05-06',YEAR(CURRENT_DATE)-%m-%d); 
6

वर्तमान उत्तरों के साथ समस्या यह है कि उनमें से कोई भी लीप वर्ष को ध्यान में नहीं लेता है। यदि आप '2016-02-29' तारीख लेते हैं और इसे वर्ष 2013 में संगतता के माध्यम से परिवर्तित करते हैं, तो आपको '2013-02-29' मिलता है, जो वैध तिथि नहीं है। यदि आप DATE_FORMAT ('2013-02-29', '% Y-% m-% d' चलाते हैं) परिणाम null है। यहां एक उदाहरण देखें:

http://sqlfiddle.com/#!9/c5358/11

साल बदलने के लिए एक बेहतर तरीका है, क्योंकि यह दिन के उजाले बचत के लिए खातों DATE_ADD उपयोग करने के लिए है। उदाहरण के लिए:

SELECT 
DATE_FORMAT(DATE_ADD(datecol, INTERVAL (YEAR(CURRENT_DATE()) - YEAR(datecol)) YEAR), '%Y-%m-%d') `date` 
FROM t; 

आप '2013-01-01' के साथ CURRENT_DATE() स्थानापन्न अगर आप अभी भी मौजूदा 2013 के बजाय करने के लिए सभी तिथियों कन्वर्ट करने के लिए चाहता था सकता है। इस समाधान का एक उदाहरण यहाँ है:

http://sqlfiddle.com/#!9/c5358/12

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