Làm cách nào để chuyển đổi ngày kiểu Chuỗi Varchar thành ngày kiểu ngày ở định dạng dd/mm/yyyy cho toàn bộ cột trong một bảng trong MySQL?
Tôi cần trợ giúp chuyển đổi cột loại varchar trong bảng có ngày được lưu dưới dạng chuỗi ở định dạng 'dd/mm/yyyy'. Tôi muốn chuyển đổi toàn bộ cột thành cột ngày bằng chức năng cập nhật bảng. Tôi đã xem qua các câu trả lời nhưng tất cả chúng đều chỉ cập nhật một hàng tại một thời điểm nhưng tôi muốn cập nhật toàn bộ cột trong bảng
cơ sở dữ liệu azure-sqlcơ sở dữ liệu azure-mysqlBình luận
Hiển thị nhận xét 0
Bình luận
5. Cần 1600 ký tự còn lại ký tự
▼
- Hiển thị cho tất cả người dùng
- Hiển thị với người đăng gốc & Microsoft
- Người kiểm duyệt có thể xem
- Có thể xem bởi người kiểm duyệt và người đăng gốc
- Khả năng hiển thị nâng cao
tệp đính kèm. Có thể sử dụng tối đa 10 tệp đính kèm [bao gồm cả hình ảnh] với tối đa 3. 0 MiB mỗi cái và 30. tổng cộng 0 MiB
ErlandSommarskog đã trả lời • 28 tháng 5 năm 22
Đầu tiên là một cuộc thảo luận meta. bạn đã gắn thẻ bài viết của mình với sql-server-general
, azure-sql-database
và azure-database-mysql
. Trong số này, chỉ có cái cuối cùng liên quan đến MySQL. Hai cái còn lại liên quan đến Microsoft SQL Server, đây là một sản phẩm khác và những gì áp dụng cho SQL Server có thể không áp dụng cho MySQL
Mình không làm về MySQL, chỉ có SQL Server nên chỉ đại khái thôi
Trong thế giới tốt nhất, nó có thể đơn giản như
ALTER TABLE tbl ALTER COLUMN col date [NOT] NULL
Điều này giả định ba điều.
1. Công cụ thực sự hỗ trợ chuyển đổi này. [Đúng cho SQL Server. ]
2. Diễn giải chuỗi mặc định của công cụ thực sự là dd/mm/yyyy. [Đúng với SQL Server nếu trước tiên bạn đưa ra lệnh SET DATEFORMAT hoặc nếu cài đặt ngôn ngữ của bạn là tiếng Anh, tiếng Pháp hoặc tiếng Đức chẳng hạn - chứ không phải us_english. ]
3. Tất cả các giá trị trong cột tuân theo định dạng và không có giá trị rác nào như 30/02/2022
, 05/27/2022
hoặc Kilroy was here
. [Hoàn toàn không có khả năng. ]
Nếu điều sau được chứng minh là đúng, thì điều tốt nhất có thể là [Tôi đã bỏ qua những điều tôi không biết cách thực hiện trong MySQL]
ALTER TABLE tbl ADD newcol date
UPDATE tbl
SET newcol = cast[col AS date]
WHERE
ALTER TABLE tbl DROP COLUMN col
-- Rename newcol to col
Bình luận
Hiển thị nhận xét 0
Bình luận
5. Cần 1600 ký tự còn lại ký tự
▼
- Hiển thị cho tất cả người dùng
- Hiển thị với người đăng gốc & Microsoft
- Người kiểm duyệt có thể xem
- Có thể xem bởi người kiểm duyệt và người đăng gốc
- Khả năng hiển thị nâng cao
tệp đính kèm. Có thể sử dụng tối đa 10 tệp đính kèm [bao gồm cả hình ảnh] với tối đa 3. 0 MiB mỗi cái và 30. tổng cộng 0 MiB
NaomiNNN đã trả lời • Ngày 29 tháng 5 năm 22 . NaomiNNN đã nhận xét • Ngày 29 tháng 5 năm 22
Bạn có thể đăng cấu trúc bảng của mình không và bạn có chính xác những gì? . g. nếu bạn đang sử dụng SQL Server, bạn có thể đăng kết quả của việc này không
SELECT @@VERSION
?
Giả sử bảng của bạn có một cột ngày khác với cột varchar của bạn, bạn có thể thử
DECLARE @t TABLE[id INT IDENTITY[1,1] PRIMARY KEY, vDt VARCHAR[100], dt DATE NULL]
INSERT INTO @t [vDt] VALUES ['28/02/2022'], ['30/3/2021'], ['1/1/2000']
SET DATEFORMAT DMY
UPDATE @t SET dt = TRY_CAST[vDt AS DATE]
SELECT * FROM @t
Bình luận
Nhận xét · Hiển thị 2
Bình luận
5. Cần 1600 ký tự còn lại ký tự
▼
- Hiển thị cho tất cả người dùng
- Hiển thị với người đăng gốc & Microsoft
- Người kiểm duyệt có thể xem
- Có thể xem bởi người kiểm duyệt và người đăng gốc
- Khả năng hiển thị nâng cao
tệp đính kèm. Có thể sử dụng tối đa 10 tệp đính kèm [bao gồm cả hình ảnh] với tối đa 3. 0 MiB mỗi cái và 30. tổng cộng 0 MiB
Vâng, điều đó tốt cho SQL Server - nhưng câu hỏi là về MySQL
0 Phiếu bầu 0 ·
Bạn nói đúng, tôi đã không đọc tiêu đề đầy đủ. Bây giờ tôi thấy đó là câu hỏi về MySQL. Tôi đã cố gắng tìm kiếm nhanh TRY_CAST analogue trong MySQL, có vẻ như nó khó hơn nhiều trong MySQL so với. Máy chủ SQL. https. // stackoverflow. com/câu hỏi/27332240/how-to-know-cast-failed-in-mysql