2013-04-18 44 views
6

Làm cách nào để chuyển đổi định dạng Thời gian "10:02:22 PM" thành định dạng ngày giờ SQL Server.Chuyển đổi Varchar thành Thời gian trong SQL Server

Tôi có một cột dữ liệu như vậy. Tôi đã nhập cột này từ Tệp CSV và bây giờ muốn chuyển đổi nó thành Định dạng ngày giờ để tôi có thể sử dụng Hàm thời gian ngày.

Tôi muốn có thể chèn cột này vào một bảng khác với định dạng Ngày giờ chính xác.

+0

Khoảng trống trong dữ liệu thời gian đó có thực sự xuất hiện không? – RichardTheKiwi

+0

Giá trị ngày và thời gian được lưu trữ trong DB mà không có bất kỳ định dạng nào. Đó là giá trị ngày và giờ của định dạng ứng dụng khách. –

+0

@RichardTheKiwi: Có không gian có mặt trước AM/PM. – SarangArd

Trả lời

1

Bạn không cần phải chuyển đổi nó. Một diễn viên tiềm ẩn xảy ra khi bạn sử dụng

INSERT otherTable 
SELECT ....., timeAsVarchar, ... 
    FROM csvTable 

Nếu tất cả dữ liệu thời gian (không gian hàng đầu) được phân tích cú pháp từ chuỗi, truy vấn sẽ hoạt động tốt. Tuy nhiên, nếu có khả năng dữ liệu xấu hoặc trống mà không thể được chuyển đổi sang một thời điểm, kiểm tra nó trước

INSERT otherTable 
SELECT ....., CASE WHEN ISDATE(timeAsVarchar)=1 THEN timeAsVarchar END, ... 
    FROM csvTable 

ELSE NULL được ngụ ý vì vậy tôi rời nó ra.

+0

Chuyển đổi Cast Implicit không thành công và tôi gặp lỗi "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ự". ? – SarangArd

2

Sử dụng liên kết này: http://msdn.microsoft.com/en-us/library/ms187928.aspx.

Đối với chuyển đổi thời gian chỉ ...

SELECT CONVERT(TIME, '10:00:22 PM'); 

Cung cấp đầu ra sau đây ...

22:00:22.000000 

Thời gian chuyển đổi với ngày và thời gian ...

SELECT CONVERT(DATETIME, '10:00:22 PM'); 

Cung cấp cho các sản lượng sau ...

1900-01-01 22:00:22.0000 

Lưu ý: Đối với datetime, bạn cần có ngày cụ thể làm đầu vào nếu không, nó sẽ xem là ngày thế kỷ mặc định.

+0

Vì lý do nào đó, chuyển đổi không thành công khi tôi cố gắng chuyển đổi cột.Nhưng nó thành công khi tôi làm điều đó một cách riêng lẻ Tôi có thể biết tại sao? – SarangArd

+0

Nó có thể chuyển đổi giá trị AM nhưng không có giá trị PM. có thể chuyển đổi "00:00:01 PM" thành "00:59:59 PM" Nhưng nó có thể chuyển đổi "01:00:00 PM" Bạn có thể giúp tôi về điều đó không ?? – SarangArd

+1

Trong hệ thống 12 giờ không có 00 giờ là lý do khiến cuộc trò chuyện của bạn không thành công. –

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