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

Chuyển đổi số tháng thành tên tháng trong SQL Server (T-SQL)

Bạn có thể sử dụng mã T-SQL bên dưới để chuyển đổi số tháng thành tên tương ứng của nó trong SQL Server.

Điều này dành cho những thời điểm mà bạn thực sự không có ngày đầy đủ - khi tất cả những gì bạn có là số tháng. Nếu bạn làm có ngày, sau đó là cách lấy tên tháng từ ngày.

Ví dụ

Bạn có thể lấy tên tháng từ số tương ứng của nó bằng cách sử dụng DATENAME() hàm kết hợp với DATEADD() .

Dưới đây là một ví dụ sử dụng tháng 10 (tháng 10):

SELECT DATENAME( 
    month, 
    DATEADD( month , 10, -1 )
    );

Kết quả:

October

Giải thích về Quy tắc

Nếu bạn đang thắc mắc tại sao lại có -1 trong đoạn mã trên, đó là vì ngày gốc là 1900-01-01 (chính xác là 1900-01-01 00:00:00.000).

Nếu chúng ta thêm 10 với 01, thì chúng ta nhận được 11, đó là tháng 11 (tháng sai). Do đó chúng ta cần trừ nó đi 1.

Ví dụ sau đây sẽ minh họa điều này tốt hơn lời nói của tôi. Đây là các DATEADD() khác nhau các giá trị được trả về, tùy thuộc vào những gì tôi sử dụng làm đối số thứ ba.

SELECT 
  DATEADD( month, 0, 0 ) AS [Base Date],
  DATEADD( month, 10, 0 ) AS [Add 10],
  DATEADD( month, 10, -1 ) AS [Subtract 1];

Kết quả:

 +-------------------------+-------------------------+-------------------------+
 | Base Date               | Add 10                  | Subtract 1              |
 |-------------------------+-------------------------+-------------------------|
 | 1900-01-01 00:00:00.000 | 1900-11-01 00:00:00.000 | 1900-10-31 00:00:00.000 |
 +-------------------------+-------------------------+-------------------------+ 

Vì vậy, tùy chọn thứ ba cung cấp cho chúng ta số tháng chính xác và việc sử dụng DATENAME() là một vấn đề đơn giản. để chuyển nó thành tên tháng.

Một giải pháp thay thế:FORMAT()

Nếu bạn không thích DATENAME() , bạn có thể hoán đổi nó cho FORMAT() chức năng thay thế. Khái niệm tương tự cũng được áp dụng.

SELECT FORMAT( 
    DATEADD( month , 10, -1 ),
    'MMMM'
    );

Kết quả:

October

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để xoay số cột không xác định &không có tổng hợp trong SQL Server?

  2. SQL Server 2016:Tạo một thủ tục được lưu trữ

  3. Cách thay đổi kiểu dữ liệu của cột trong SQL Server (T-SQL)

  4. Cách hàm PATINDEX () hoạt động trong SQL Server (T-SQL)

  5. Cài đặt cụm chuyển đổi dự phòng SQL Server -2