2011-12-14 38 views
10

Tôi có bó ngày ở định dạng YYYY-MM-DDMYSQL - Thay đổi năm ngày 2020-2011

Nhưng tôi có tất cả năm vào năm 2020-MM-DD

Tôi muốn thay đổi nó để 2011-MM-DD

Làm cách nào để đạt được điều này?

+0

Kiểu dữ liệu của cột được đề cập là gì? –

+0

Kiểu dữ liệu của cột là ngày – Chinmay

+0

[Điều này] (http://stackoverflow.com/questions/14491906/changing-year-in-mysql-date) một là giải pháp đơn giản –

Trả lời

13
UPDATE YourTable 
    SET YourDateColumn = SUBDATE(YourDateColumn, INTERVAL 9 YEAR); 
+0

Cảm ơn bạn rất nhiều vì đã trả lời. Tôi chỉ thử nó và nó thực sự thêm 1 đến năm tức là nó làm cho ngày của tôi từ năm 2020 đến năm 2021. Là bất kỳ chức năng của họ để giảm khoảng thời gian? – Chinmay

+0

Xin lỗi tôi đã nhầm lẫn câu hỏi của tôi. Nó thực sự là ngày của tôi là ở định dạng 2020-MM-DD và tôi muốn chuyển nó sang 2010-MM-DD. Tôi xin lỗi – Chinmay

+1

@ChinmayMurugkar Để đi từ năm 2020 đến năm 2011, sử dụng 'SUBDATE (YourDateColumn, INTERVAL 9 YEAR)' Tôi đã chỉnh sửa câu trả lời để phản ánh điều này. –

5

SỬ DỤNG ADDDATE(old_date, INTERVAL -9 YEAR)

+0

Cảm ơn bạn đã trả lời. Xin lỗi tôi đã nhầm lẫn câu hỏi của tôi. Nó thực sự là ngày của tôi là ở định dạng 2020-MM-DD và tôi muốn chuyển nó sang 2010-MM-DD. Tôi rất xin lỗi – Chinmay

+0

Tôi đã chỉnh sửa câu trả lời của mình để phản ánh điều này. Câu trả lời hơi khác so với @Joe Stefanelli, nhưng cũng hoạt động tương tự. – Jason

2
UPDATE YourTable 
SET YourDateColumn = ADDDATE(YourDateColumn, INTERVAL 1 YEAR) 
WHERE YourDateColumn >= '2010-01-01' 
AND YourDateColumn <= '2010-12-31'; 

Nếu bảng của bạn xuống không có một chỉ mục trên các lĩnh vực ngày, bạn có thể nhận được ngay với điều này:

UPDATE YourTable 
SET YourDateColumn = ADDDATE(YourDateColumn, INTERVAL 1 YEAR) 
WHERE YEAR(YourDateColumn) = 2010; 

Để khắc phục vấn đề ngày của bạn với 2020 đến năm 2021 chạy điều này:

UPDATE YourTable 
SET YourDateColumn = ADDDATE(YourDateColumn, INTERVAL -1 YEAR) 
WHERE YEAR(YourDateColumn) = 2021; 

BTW Vì tôi đã sao chép mã gốc của Joe Stefanelli, +1 cho anh ấy !!!

1

Tôi muốn thêm (dành cho du khách hơn nữa cho câu hỏi) mà bạn cũng có thể "cập nhật" tích cực nhanh hơn với tuyên bố với SUBDATE chức năng, tôi nghĩ là hợp lý nhanh hơn, thời gian để lấy nó aprox. 1 giờ để ảnh hưởng đến 2,3 nghìn tỷ hàng SUBDATE làm cho nó một nửa thời gian.

UPDATE Table SET DateTimeField = SUBDATE(DateTimeField, INTERVAL -x YEAR); 

Trong đó x là số âm bạn muốn thêm làm giá trị năm mới. Thành thật mà nói tôi bỏ qua lý do tại sao điều này xảy ra, nhưng nó hoạt động.

Các vấn đề liên quan