Tôi có một trường ngày [tinytext] giữ thông tin ngày ở định dạng "dd-mm-yy", ví dụ 07-01-90. Sử dụng truy vấn MySQL, tôi muốn thay đổi nó thành định dạng ngày Yyyy-MM-DD. Tôi đã thử mã dưới đây nhưng không có gì xảy ra.
mysql_query["UPDATE Table SET date=STR_TO_DATE['date','%Y,%m,%d']"];
hỏi ngày 24 tháng 2 năm 2012 lúc 7:31Feb 24, 2012 at 7:31
1
Bạn đang sử dụng đúng chức năng STR_TO_DATE[str,format]
để đạt được mục tiêu, nhưng bạn đang mắc hai sai lầm:
- Trong truy vấn của bạn, đối số
format
không khớp với định dạng biểu thức chuỗi. Bạn đã nói rằng nó ở định dạngdd-mm-yy
trong khi bạn vượt qua%Y,%m,%d
[dấu phẩy tách biệt] cho đối sốformat
. Truy vấn sẽ trả về lỗi "giá trị dữ liệu không chính xác". Bạn nên sử dụng
1.mysql_query["UPDATE `Table` SET `date` = STR_TO_DATE[`date`, '%d-%m-%Y']"]; mysql_query["ALTER TABLE `Table` CHANGE COLUMN `date` `date` DATE"];
- Bạn không thể thay đổi kiểu dữ liệu của một cột khi đang bay, bằng cách đặt các loại giá trị khác nhau được truyền. Trước tiên bạn phải cập nhật các giá trị và sau đó thay đổi kiểu dữ liệu cho cột.
Vì vậy, tóm tắt:
mysql_query["UPDATE `Table` SET `date` = STR_TO_DATE[`date`, '%d-%m-%Y']"];
mysql_query["ALTER TABLE `Table` CHANGE COLUMN `date` `date` DATE"];
Ngoài ra, hãy xem xét chuyển đổi sang phần mở rộng PDO được đề xuất thay cho phần mở rộng
mysql_query["UPDATE `Table` SET `date` = STR_TO_DATE[`date`, '%d-%m-%Y']"];
mysql_query["ALTER TABLE `Table` CHANGE COLUMN `date` `date` DATE"];
2 cũ và từ từ.Đã trả lời ngày 22 tháng 5 năm 2012 lúc 9:48May 22, 2012 at 9:48
TaztazTaz
3.6672 Huy hiệu vàng37 Huy hiệu bạc58 Huy hiệu Đồng2 gold badges37 silver badges58 bronze badges
Lỗi trong truy vấn của bạn
là str_to_date [ngày, '%y-%m-%d']]date, '%Y-%m-%d']
mysql_query["UPDATE Table SET date=STR_TO_DATE[date,'%Y-%m-%d']"];
Đã trả lời ngày 24 tháng 2 năm 2012 lúc 8:33Feb 24, 2012 at 8:33
Naveen Kumarnaveen KumarNaveen Kumar
4,4231 Huy hiệu vàng17 Huy hiệu bạc36 Huy hiệu đồng1 gold badge17 silver badges36 bronze badges
Thử cái này:
INSERT INTO table[date_field] VALUES[STR_TO_DATE['December 8, 2010','%M %d,%Y']];
DevPro
16.1k3 Huy hiệu vàng26 Huy hiệu bạc38 Huy hiệu đồng3 gold badges26 silver badges38 bronze badges
Đã trả lời ngày 21 tháng 7 năm 2014 lúc 6:41Jul 21, 2014 at 6:41
KarankaranKaran
5176 Huy hiệu bạc16 Huy hiệu Đồng6 silver badges16 bronze badges
Hãy thử nó với hàm date_format [].
mysql_query["UPDATE Table SET date=DATE_FORMAT[date,'%Y,%m,%d']"];
Đã trả lời ngày 24 tháng 2 năm 2012 lúc 7:35Feb 24, 2012 at 7:35
Korhan Ozturkkorhan OzturkKorhan Ozturk
Huy hiệu vàng 11K634 Huy hiệu bạc47 Huy hiệu đồng6 gold badges34 silver badges47 bronze badges
Để hiển thị 2 chữ số2 digit year
3mysql_query["UPDATE `Table` SET `date` = STR_TO_DATE[`date`, '%d-%m-%Y']"]; mysql_query["ALTER TABLE `Table` CHANGE COLUMN `date` `date` DATE"];
Để hiển thị 4 chữ số4 digit year
4mysql_query["UPDATE `Table` SET `date` = STR_TO_DATE[`date`, '%d-%m-%Y']"]; mysql_query["ALTER TABLE `Table` CHANGE COLUMN `date` `date` DATE"];
Đã trả lời ngày 24 tháng 2 năm 2012 lúc 7:35Feb 24, 2012 at 7:35
Korhan Ozturkkorhan OzturkFahim Parkar
Huy hiệu vàng 11K634 Huy hiệu bạc47 Huy hiệu đồng41 gold badges157 silver badges274 bronze badges
2
Để hiển thị 2 chữ số
UPDATE table_name SET date = DATE_FORMAT['date', %Y-%m-%d];
Để hiển thị 4 chữ số
Fahim Parkarfahim Parkar5 gold badges23 silver badges39 bronze badges
30.4K41 Huy hiệu vàng157 Huy hiệu bạc274 Huy hiệu đồngFeb 24, 2012 at 7:36
Tôi muốn nói bạn phải làm điều này:helle
AKSU9 gold badges56 silver badges82 bronze badges
5.1815 Huy hiệu vàng23 Huy hiệu bạc39 Huy hiệu Đồng
Đã trả lời ngày 24 tháng 2 năm 2012 lúc 7:36Feb 24, 2012 at 7:34
HellehelleKumar V
10,9k9 Huy hiệu vàng56 Huy hiệu bạc82 Huy hiệu Đồng9 gold badges39 silver badges58 bronze badges