को जब मैं yound था और बेवकूफ थोड़ा experiance था, मैंने तय कर लिया है कि यह एक अच्छा विचार होगा, पीएचपी में timestamps पैदा करते हैं और मेरी MySQL InnoDB तालिका में INT
कॉलम में उन्हें स्टोर करने के लिए। अब, जब इस तालिका में लाखों रिकॉर्ड हैं और कुछ दिनांक-आधारित प्रश्नों की आवश्यकता है, तो यह इस कॉलम को TIMESTAMP
में बदलने का समय है। मैं यह कैसे करु?INT से mysql स्तंभ परिवर्तित TIMESTAMP
Currenlty, मेरी मेज इस तरह दिखता है:
id (INT) | message (TEXT) | date_sent (INT)
---------------------------------------------
1 | hello? | 1328287526
2 | how are you? | 1328287456
3 | shut up | 1328234234
4 | ok | 1328678978
5 | are you... | 1328345324
यहाँ प्रश्नों मैं के साथ आया था, कन्वर्ट करने के लिए date_sent
स्तंभ TIMESTAMP
रहे हैं:
-- creating new column of TIMESTAMP type
ALTER TABLE `pm`
ADD COLUMN `date_sent2` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP();
-- assigning value from old INT column to it, in hope that it will be recognized as timestamp
UPDATE `pm` SET `date_sent2` = `date_sent`;
-- dropping the old INT column
ALTER TABLE `pm` DROP COLUMN `date_sent`;
-- changing the name of the column
ALTER TABLE `pm` CHANGE `date_sent2` `date_sent` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP();
सब कुछ मेरे लिए सही लगता है, लेकिन जब समय UPDATE
बजे SET
date_sent2 =
date_sent ;
के लिए आता है, मुझे एक चेतावनी और टाइमस्टैम्प मान खाली रहता है:
+---------+------+--------------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------------+
| Warning | 1265 | Data truncated for column 'date_sent2' at row 1 |
मैं क्या गलत कर रहा हूं और क्या इसे ठीक करने का कोई तरीका है?
धन्यवाद। अच्छी तरह से काम! –