Làm cách nào để chuyển đổi varchar thành int trong mysql?

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-mysql

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
Chuyển đổi chế độ hiển thị Nhận xét. Hiển thị hiện tại. Hiển thị với tất cả người dùng

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-databaseazure-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
Chuyển đổi chế độ hiển thị Nhận xét. Hiển thị hiện tại. Hiển thị với tất cả người dùng

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
Chuyển đổi chế độ hiển thị Nhận xét. Hiển thị hiện tại. Hiển thị với tất cả người dùng

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 · 29 tháng 5 lúc 12 giờ. 59 giờ tối

Vâng, điều đó tốt cho SQL Server - nhưng câu hỏi là về MySQL

0 Phiếu bầu 0 ·

NaomiNNN ErlandSommarskog · 29 tháng 5 lúc 01. 06 giờ chiều

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

CAST[] trong MySQL là gì?

Hàm CAST[] chuyển đổi một giá trị [thuộc bất kỳ loại nào] thành kiểu dữ liệu đã chỉ định .

Int có phải là một kiểu dữ liệu trong MySQL không?

MySQL hỗ trợ các kiểu số nguyên chuẩn SQL INTEGER [hoặc INT ] và SMALLINT . Là một phần mở rộng của tiêu chuẩn, MySQL cũng hỗ trợ các kiểu số nguyên TINYINT , MEDIUMINT và BIGINT. Bảng sau đây hiển thị dung lượng lưu trữ và phạm vi cần thiết cho từng loại số nguyên.

Một int trong MySQL là gì?

Trong MySQL, INTEGER [INT] là giá trị số không có số thập phân . Nó định nghĩa các số nguyên có thể được lưu trữ trong một trường hoặc cột. Ngoài ra, MySQL hỗ trợ thuộc tính display_width [ví dụ: INT[1]] và thuộc tính ZEROFILL, tự động thêm số 0 vào giá trị tùy thuộc vào độ rộng hiển thị.

Varchar nghĩa là gì trong MySQL?

Giá trị trong cột VARCHAR là chuỗi có độ dài thay đổi . Độ dài có thể được chỉ định dưới dạng giá trị từ 0 đến 65,535. Độ dài tối đa hiệu quả của VARCHAR tùy thuộc vào kích thước hàng tối đa [65.535 byte, được chia sẻ giữa tất cả các cột] và bộ ký tự được sử dụng.

Chủ Đề