Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách trích xuất hoặc chuyển đổi dữ liệu thời gian từ một chuỗi trong SQL Server

Vấn đề:

Bạn muốn chuyển đổi một chuỗi chứa ngày và giờ thành giá trị TIME trong SQL Server.

Chúng ta cần chuyển đổi một chuỗi chứa tên, ngày và giờ trong tuần thành giá trị TIME.

Giải pháp 1:

Chúng tôi sẽ sử dụng PARSE() hàm số. Đây là truy vấn bạn sẽ viết:

SELECT 
  PARSE('Sunday, 2 February 2020 11:23:11.1134505' AS TIME ) 
  AS time_value;

Đây là kết quả:

11:23:11.1134505

Thảo luận:

Sử dụng PARSE() hàm để chuyển đổi một chuỗi chứa tên, ngày và giờ trong tuần sang kiểu dữ liệu TIME. Hàm này nhận chuỗi để chuyển đổi, từ khóa AS và kiểu dữ liệu mới (trong ví dụ của chúng tôi là TIME ). Chuỗi phải chứa một giá trị đại diện cho kiểu dữ liệu này. Trong ví dụ của chúng tôi, chuỗi 'February 2, 2020 11:23:11.1134505' lưu trữ một giá trị thời gian.

Lưu ý rằng thời gian chỉ là một phần của chuỗi này, cũng chứa tên của ngày trong tuần. Không sử dụng CONVERT() hoặc CAST() các chức năng trong trường hợp này; chúng cũng trả về kiểu dữ liệu TIME nhưng không có ngày trong tuần.

Nếu bạn đang sử dụng ngôn ngữ nói khác với ngôn ngữ máy chủ, hãy bao gồm từ khóa SỬ DỤNG và mã văn hóa thích hợp. Đối với tiếng Ba Lan, bạn sẽ viết:

SELECT 
  PARSE('Niedziela, 2 lutego 2020 11:23:11.1134505' AS TIME USING 'pl-PL' ) 
  AS time_value;

Để biết thêm về các giá trị tham số văn hóa, hãy xem tài liệu SQL Server chính thức.

Trong trường hợp này, bạn nên sử dụng PARSE() , ngay cả khi nó không có hiệu suất tốt nhất. Nếu bạn đang thao tác trên một chuỗi biểu thị giá trị thời gian mà không lưu trữ dữ liệu bổ sung (như tên của ngày trong tuần), sử dụng CASE() hàm số. Đây là một ví dụ.

Giải pháp 2:

SELECT 
  CAST('2 February 2020 11:23:11.1134505' AS TIME ) 
  AS time_value;

Đây là kết quả:

11:23:11.1134505

Chuỗi chứa ngày và giờ cần chuyển đổi phải ở định dạng của kiểu dữ liệu ngày và giờ T-SQL. Bạn có thể đọc thêm trong tài liệu SQL Server.

CAST() hàm là ANSI SQL Standard và hiệu suất của nó tốt hơn CONVERT() hoặc PARSE() .

Cuối cùng, bạn cũng có thể sử dụng CONVERT() hàm số. Hãy xem ví dụ tiếp theo.

Giải pháp 3:

  SELECT 
  CONVERT(TIME, '2 Feb, 2020 11:23:11.1134505') 
  AS time_value;

Kết quả:

11:23:11.1134505

CONVERT() hàm nhận ba đối số:kiểu dữ liệu mới, chuỗi cần chuyển đổi và định dạng mong muốn (tùy chọn). Tuy nhiên, bạn chỉ nên sử dụng hàm này nếu bạn cần chỉ định cách định dạng dữ liệu ngày và giờ, vì hiệu suất của nó không tốt bằng CAST() .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MAMP có nên trả về ::1 dưới dạng IP trên localhost không?

  2. Sự khác biệt giữa kết nối trái và tham gia phải trong SQL Server

  3. Cách gửi một email HTML từ SQL Server (T-SQL)

  4. Nội bộ của bảy loại máy chủ SQL - Phần 1

  5. Làm cách nào để tôi chèn một Byte [] vào một cột VARBINARY của Máy chủ SQL