2013-07-10 38 views
11

Điều tôi đang cố gắng đạt được là khá thẳng về phía trước, để có được một định dạng ngày tháng khác;Truy vấn SQL - Thay đổi định dạng ngày trong truy vấn thành DD/MM/YYYY

Từ này: Jan 30 2013 12:00:00:000AM Để này: DD/MM/YYYY hoặc trong trường hợp này 30/01/2013

Tuy nhiên, khi đó là ngày 1 đến 9 của tháng định dạng ngày là mất tích một số không và có hai không gian, như thể hiện;

Jul 3 2014 12:00:00:000AM 

Tôi đã tròn săn bắn cho một giải pháp nhưng không thành công, định dạng của ngày là không bình thường và thay đổi tùy theo ngày tháng tuy nhiên định dạng này được tạo ra bởi một hệ thống nội bộ và không thể thay đổi . Sau đó tôi sẽ phải khớp mẫu để thay đổi định dạng? Tôi sẽ đi đâu để tới đó?

Ví dụ về một phần của truy vấn là điều này;

SELECT 
PREFIX_TableName.ColumnName1 AS Name, 
PREFIX_TableName.ColumnName2 AS E-Mail, 
PREFIX_TableName.ColumnName3 AS TransactionDate, 
PREFIX_TableName.ColumnName4 AS OrderNumber, 
... 

Điểm mấu để được chỉnh sửa là này PREFIX_TableName.ColumnName3 AS TransactionDate,

+0

gửi truy vấn mà bạn đã cố gắng –

+1

Is nó MySql hoặc Sql-Server? Bạn đã gắn thẻ cả hai –

+1

Cột dữ liệu của bạn có cột nào? Nó là một datetime hoặc một Varchar? – contradictioned

Trả lời

5

Nếu tôi hiểu câu hỏi của bạn, hãy thử một cái gì đó giống như

declare @dd varchar(50)='Jan 30 2013 12:00:00:000AM' 

Select convert(varchar,(CONVERT(date,@dd,103)),103) 

Cập nhật này

SELECT 
PREFIX_TableName.ColumnName1 AS Name, 
PREFIX_TableName.ColumnName2 AS E-Mail, 
convert(varchar,(CONVERT(date,PREFIX_TableName.ColumnName3,103)),103) AS TransactionDate, 
PREFIX_TableName.ColumnName4 AS OrderNumber 
+1

Tôi đã đăng một phần có liên quan của truy vấn trong mô tả ở trên. –

+0

@Matt: Tôi đã cập nhật câu trả lời, đó là những gì bạn mong đợi? –

+0

Tôi đã thử nghiệm và truy vấn không chạy. –

20

Nếu DB là SQL Server sau đó

select Convert(varchar(10),CONVERT(date,YourDateColumn,106),103) 
+1

Đây là cách chính xác để làm điều đó. Tôi đã có thể mong đợi rằng bạn sẽ phải sử dụng 109 như là phong cách datetime đầu vào, mặc dù 106 dường như làm việc tốt. Trong cả hai trường hợp, SQL Server diễn giải chính xác 'Jul 3 2014 12: 00: 00: 000AM' - ngay cả khi có thêm khoảng trống giữa tháng và ngày. Hãy xem http://msdn.microsoft.com/en-us/library/ms187928.aspx để biết thêm các tùy chọn chuyển đổi. – Dan

+0

Điều này phải được đánh dấu là câu trả lời đúng –

2
SELECT CONVERT(varchar(11),Getdate(),105) 
Các vấn đề liên quan