2014-05-23 5 views
5

Próbuję przenieść funkcję MySQL DATE_FORMAT(date,'%y-%m-%d %h:%i:%s %p') na odpowiednik MsSQL za pomocą CONVERT().
Jak sformatować równoważny ciąg datetime w SQL SERVER 2012, aby uzyskać ten wynik '2014-05-24 01:24:37 AM'?Jak sformatować datetime w SQL SERVER

+0

Ponownie otwarte jako SQL Server 2012 ma funkcję 'format' nie w 2008. –

Odpowiedz

13

W SQL Server 2012, a nawet można użyć FORMAT():

SELECT FORMAT(CURRENT_TIMESTAMP, 'yyyy-MM-dd hh:mm:ss tt') 

w poprzednich wersjach, może być konieczne do łączenia dwóch lub więcej różnych konwersji datetime aby uzyskać to, czego potrzebują, na przykład:

SELECT 
    CONVERT(CHAR(10), CURRENT_TIMESTAMP, 23) + ' ' + 
    RIGHT('0' + LTRIM(RIGHT(CONVERT(CHAR(20), CURRENT_TIMESTAMP, 22), 11)), 11); 

Zobacz sekcję Style daty i czasu CAST and CONVERT (Transact-SQL) dla wszystkich wbudowanych stylów formatowania.


chciałbym pamiętać, że jeśli masz dobry powód do tego, mam na myśli naprawdę dobry powód, formatowanie jest zazwyczaj lepsza praca dla technologii wyświetlania danych.

+0

Dzięki, pomogło to. – Ankit

+0

Jestem prawie pewien, że podany przykład nie zadziała - musisz umieścić miesiące w literach: "rrrr-MM-dd". –

+0

@Andy, myślę, że masz absolutną rację! Naprawię to, dzięki. –