2015-03-03 12 views
5

Tôi đang cố gắng chuyển đổi Ngày của tôi (ví dụ: 2012-04-20 05:54:59) định dạng thành mm-yyyy. Tôi đi qua một số giải pháp mà nói rằng bạn sẽ cần phải chuyển đổi thành varchar. Có cách nào sử dụng chức năng Chuyển đổi không?Chuyển đổi SQL Server Date thành mm-yyyy

Cảm ơn :)

+2

Hãy thử 'CHỌN RIGHT (CONVERT (VARCHAR (10), getdate(), 105), 7) ' –

+0

tôi đã cố gắng này, nhưng khi tôi sử dụng varchar im không thể sắp xếp ngày theo năm. ví dụ: tôi đã thay đổi ngày từ 2015-04-20 05:54:59 thành 04-2015, vì đây là định dạng varchar và nói rằng có nhiều ngày trong cột có ngày tháng: 03-2011, 06-2014. và nếu tôi sắp xếp cột này, tôi sẽ nhận được các thông tin sau: 03-2011,04-2015,06-2014. Sắp xếp cột VARCHAR này không sắp xếp cột ngày tháng. –

+3

Thực hiện việc sắp xếp trên cột dưới dạng giá trị ngày giờ, chỉ cần thực hiện tác vụ liên quan đến định dạng này thành cột bạn sẽ sử dụng cho * display *. –

Trả lời

10

Bạn có thể sử dụng FORMAT chức năng, sẵn từ SQL Server 2012 trở đi:

DECLARE @myDate DATETIME = '2012-04-20 05:54:59' 
SELECT FORMAT(@myDate, 'MM-yyyy') 

Output:

04-2012 
+0

Cảm ơn bạn :). Nhưng ở đây bạn đã cho ăn ngày trong truy vấn. Làm thế nào tôi sẽ khung lệnh nếu tôi đã có một cột ngày thay vì ??? Tôi đã thử những điều sau đây, nhưng không hoạt động: DECLARE @myDate (chọn ngày từ dbo.EOD) CHỌN CHỌN (@myDate, 'MM-yyyy') –

+0

@PrateekDaniels Nếu bạn muốn định dạng một cột cụ thể, ví dụ như cột [ngày], của một bảng sau đó bạn có thể làm: 'chọn FORMAT ([ngày], 'MM-yyyy') từ dbo.EOD' –

+0

Cảm ơn một triệu @Giorgos! :) –

5

Có thể có một cách duyên dáng hơn để gỡ bỏ tính năng này, nhưng các công trình bên dưới hoạt động.

Declare @dt datetime = GETDATE() 

SELECT LEFT('0' + CAST(MONTH(@dt) as varchar(2)),2) + '-' + CAST(YEAR(@dt) as char(4)) 

btw Ngày chuyển đổi bình thường của tôi là here, nhưng tôi không thấy MM-YYYY là một trong các định dạng.

+0

Chính xác sẽ là hàm RIGHT, vì khi bạn ở trên tháng 9, bạn muốn hai số cuối cùng. – Sawd

3

Như bạn đang sử dụng SQL Server 2014, bạn có thể sử dụng FORMAT đó là tốt nhất bạn cũng có thể áp dụng điều này:

SELECT CONVERT(VARCHAR(2),MONTH(yourDateTimeField)) + '-' + 
     CONVERT(VARCHAR(4),YEAR(yourDateTimeField)) AS [MM-YYYY] 
FROM yourTable 
ORDER BY yourDateTimeField 
+0

Tôi đã thử điều này nhưng khi tôi sử dụng varchar im không thể sắp xếp ngày theo năm. ví dụ: tôi đã thay đổi ngày từ 2015-04-20 05:54:59 thành 04-2015, vì đây là định dạng varchar và nói rằng có nhiều ngày trong cột có ngày tháng: 03-2011, 06-2014. và nếu tôi sắp xếp cột này, tôi sẽ nhận được các thông tin sau: 03-2011,04-2015,06-2014. Sắp xếp cột VARCHAR này không sắp xếp cột ngày tháng. –

+0

Bạn chỉ cần sắp xếp nó dựa trên trường datetime của bạn và hiển thị nó như MM-YYYY. Xem asnwer cập nhật của tôi. – sqluser

3
select [MM-YYYY] = right(convert(varchar(10),getdate(),105),7) 

enter image description here

+0

Tôi đã thử điều này nhưng khi tôi sử dụng varchar im không thể sắp xếp ngày theo năm. ví dụ: tôi đã thay đổi ngày từ 2015-04-20 05:54:59 thành 04-2015, vì đây là định dạng varchar và nói rằng có nhiều ngày trong cột có ngày tháng: 03-2011, 06-2014. và nếu tôi sắp xếp cột này, tôi sẽ nhận được các thông tin sau: 03-2011,04-2015,06-2014. Sắp xếp cột VARCHAR này không sắp xếp cột ngày tháng. –

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