Điểm:0

SQL Chuyển đổi chuỗi thành ngày

lá cờ us

điều này thực sự khiến tôi bối rối trong vài ngày và đang tìm kiếm sự trợ giúp. Tôi đang sử dụng SQL Server 2017.

Tôi đang cố xử lý các chuỗi từ trường định dạng miễn phí và chuyển đổi chúng thành ngày ở định dạng "dd/mm/yyyy" hoặc nếu chúng không ở định dạng này thì chỉ cần hiển thị nguyên văn văn bản.

Tôi cần cái này ở chế độ XEM nên không thể sử dụng SET LANGUAGE. Nghe có vẻ đơn giản khi sử dụng đổilà ngày nhưng dường như không hoạt động.

Vì vậy, đối với đoạn mã bên dưới (hãy nhớ rằng đây sẽ ở chế độ XEM), tôi muốn đọc văn bản và nếu chuỗi chuyển đổi thành ngày (tức là.ở định dạng "dd/mm/yyyy", sau đó chạy chuyển đổi thành ngày vì tôi cần nó ở định dạng ngày để Excel nhận (thông qua Cơ sở dữ liệu máy chủ SQL kết nối)) và nếu nó không chuyển đổi thành ngày thì hiển thị văn bản như nó vốn có.

tạo bảng dateTest1 
( idx int, 
 dateStringTest varchar(15) 
); 
  
chèn vào dateTest1 (idx, dateStringTest) 
các giá trị (1, '13/01/2021'), (2, 'không'); 
 
 
lựa chọn 
       trường hợp khi isdate(convert(datetime, dateStringTest, 103)) = 1 
       sau đó chuyển đổi (datetime, dateStringTest, 103)
       khác dateStringTest 
       kết thúc như dtre
từ ngàyTest1 
--nơi idx = 1 
  
-- error: Msg 241, Level 16, State 1, Line 15 Chuyển đổi không thành công khi chuyển đổi ngày và/hoặc thời gian từ chuỗi ký tự. 
-- lỗi này xảy ra với idx = 2. Idx = 1 hoạt động bình thường

Bất kỳ sự trợ giúp nào về điều này sẽ được đánh giá rất cao vì nó đang làm tôi bận tâm.

Cảm ơn trước Phao-lô

Điểm:1
lá cờ cn

Tôi không chắc cơ sở dữ liệu của bạn phù hợp như thế nào để thực hiện việc này. Các chức năng chuyển đổi dữ liệu trong SQL Server hơi "vụng về" so với một số chức năng khác.

Tuy nhiên, từ quan điểm của cơ sở dữ liệu của bạn:

Nếu một cái gì đó là giả sử trở thành một Ngày tháng, sau đó nó nên là một buổi hẹn hò.
Nó có thể bị "thiếu" (tức là không thể thực hiện được) nhưng nó không thể là bất kỳ thứ gì khác.
Nếu nó là bất cứ điều gì khác, sau đó nó không nên được đối xử như một Ngày tháng.

Người dùng không thể nhập ngày - chỉ Đại diện nhân vật của họ.
Hiển thị [số và] ngày từ ứng dụng của bạn yêu cầu định dạng trên "lối ra".
Đọc [số và] ngày vào ứng dụng của bạn yêu cầu ngược lại, "không định dạng" (và xác thực, tất nhiên) trên "đường vào".
Dữ liệu nên luôn được lưu trữ trong Chính xác Loại dữ liệu - "Công cụ phù hợp cho công việc phù hợp".

Phân tích văn bản tự do là có thể được thực hiện tốt nhất trong ứng dụng của bạn, trích xuất giá trị ngày tháng, xác thực và "hủy định dạng" giá trị đó rồi lưu trữ giá trị đó.

Michael Hampton avatar
lá cờ cz
Hãy cố gắng tránh trả lời các câu hỏi lạc đề.
Phill  W. avatar
lá cờ cn
Trả lời câu hỏi là một chuyện. Hướng dẫn người đăng đặt câu hỏi thường có thể tốt hơn vì họ có thể đang cố giải quyết /sai/ vấn đề. Tôi không coi việc hướng dẫn mọi người tránh [thẳng thắn] Các Thực hành Xấu mà /sẽ/ quay lại và cắn họ sau này là "lạc đề". Việc xử lý ngày tháng đã đủ khó vì đó là khi bạn biết mình đang làm việc với một ngày tháng. Việc thêm nếu và nhưng và có thể về việc những gì bạn đang tìm kiếm có phải là ngày tháng hay không sẽ khiến bạn và cơ sở dữ liệu của bạn phát điên.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.