2012-07-29 72 views
5

Tôi cần chuyển đổi datetime từ 2012-07-29 10:53:33.010 thành 29/07/2012 10:53:33.Định dạng ngày theo dd/MM/yyyy hh: mm: ss

tôi đã cố gắng sử dụng

select CONVERT(varchar(20), GETDATE(), 131) 

nhưng ngày hiển thị nó theo Hijri

11/09/1433 10:53:33: 

Xin giúp?

+0

CONVERT và GETDATE đến từ máy chủ sql vì vậy tôi đoán nó SQL Server – ryudice

+0

sql server 2008 –

Trả lời

16

Điều này có thể được thực hiện như sau:

select CONVERT(VARCHAR(10), GETDATE(), 103) + ' ' + convert(VARCHAR(8), GETDATE(), 14) 

Hy vọng nó giúp

0

Đây sẽ là varchar nhưng phải định dạng theo nhu cầu của bạn.

RIGHT('0' + LTRIM(DAY(d)), 2) + '/' 
+ RIGHT('0' + LTRIM(MONTH(d)), 2) + '/' 
+ LTRIM(YEAR(d)) + ' ' 
+ RIGHT('0' + LTRIM(DATEPART(HOUR, d)), 2) + ':' 
+ RIGHT('0' + LTRIM(DATEPART(MINUTE, d)), 2) + ':' 
+ RIGHT('0' + LTRIM(DATEPART(SECOND, d)), 2) 

Trường hợp d là trường hoặc biến datetime của bạn.

3

Bạn có thể kết hợp 2 định dạng:

3 dd/mm/yy (British/French) 
8 hh:mm:ss 

theo CONVERT() function, và sử dụng + điều hành:

SELECT CONVERT(varchar(10),GETDATE(),3) + ' ' + CONVERT(varchar(10),GETDATE(),8) 
+0

Vâng, bạn nói đúng. Lỗi của tôi. Tôi nghĩ 'CONCAT()' là một hàm cũ có sẵn từ SQL Server 2000. Tôi đã thay thế nó bằng toán tử '+'. Cảm ơn vì đã nhận xét. –

+0

Anh ấy muốn một năm hoàn chỉnh – HichemSeeSharp

0
SELECT CONVERT(CHAR(10),GETDATE(),103) + ' ' + RIGHT(CONVERT(CHAR(26),GETDATE(),109),14) 
+1

Một câu trả lời hay nên bao gồm giải thích về giải pháp thay vì chỉ đăng mã. – samlev

0

Chương trên CAST and CONVERT trên MSDN Sách trực tuyến, bạn đã bỏ lỡ câu trả lời đúng bằng một dòng .... bạn có thể sử dụng kiểu không. 121 (ODBC kinh điển (với mili giây)) để có được những kết quả mà bạn đang tìm kiếm:

SELECT CONVERT(VARCHAR(30), GETDATE(), 121) 

này mang lại cho tôi kết quả của:

2012-04-14 21:44:03.793 

Cập nhật: dựa trên cập nhật của bạn câu hỏi - tất nhiên điều này sẽ không hoạt động - bạn đang chuyển đổi một chuỗi (điều này: '4/14/2012 2:44:01 PM'chỉ là một chuỗi - đó là NOT một datetime!) thành một chuỗi ......

Bạn cần phải trước tiên chuyển đổi chuỗi bạn phải là DATETIMETHEN chuyển đổi trở lại thành chuỗi!

Hãy thử điều này:

SELECT CONVERT(VARCHAR(30), CAST('4/14/2012 2:44:01 PM' AS DATETIME), 121) 

Bây giờ bạn sẽ nhận được:

2012-04-14 14:44:01.000 

Tất cả zero cho mili giây, rõ ràng, kể từ giá trị ban đầu của bạn không bao gồm bất kỳ ....

1
CREATE FUNCTION DBO.ConvertDateToVarchar 
(
@DATE DATETIME 
) 

RETURNS VARCHAR(24) 
BEGIN 
RETURN (SELECT CONVERT(VARCHAR(19),@DATE, 121)) 
END 
1
SELECT FORMAT(your_column_name,'dd/MM/yyyy hh:mm:ss') FROM your_table_name 

Example-

SELECT FORMAT(GETDATE(),'dd/MM/yyyy hh:mm:ss') 
Các vấn đề liên quan