2013-10-16 4 views
0

J'ai une table avec une colonne datetime Je veux récupérer la date en hh: mm: ss où heures est de 12 heures.Date de la conversion

J'ai essayé ce qui suit.

convert(varchar(10), t2.CSM_START_TIME,108), 
convert(varchar(2),datepart(hour,t2.CSM_START_TIME)) 
    +':'+convert(varchar(2),datepart(mm,t2.CSM_START_TIME)) 
    +':'+convert(varchar(2), datepart(SECOND,t2.CSM_START_TIME)) 
    as START_TIME 
+0

Et quel a été le résultat de vos tentatives? – geomagas

+0

Quel était le format et quel format avez-vous obtenu? Pouvez-vous montrer ce que vous avez et comment c'est mal? Et pourquoi ne formatez-vous pas la couche de présentation? Donc, tellement, tellement plus facile. –

+0

Voulez-vous vraiment hh: mm: ss sans AM/PM? Donc vous ne savez pas si 11:34:25 est AM ou PM? –

Répondre

3
SELECT LTRIM(RIGHT(CONVERT(CHAR(20),GETDATE(),22),11)); 

Résultat:

11:40:15 PM 

Ou si vous ne voulez vraiment pas AM/PM (que je ne comprends pas):

SELECT LTRIM(LEFT(RIGHT(CONVERT(CHAR(20), GETDATE(),22),11),8)); 

Résultat:

11:40:15 

Beaucoup, beaucoup, beaucoup mieux de formater cela chez le client. Par exemple, si vous utilisez C#, regardez .Format() et .ToString(). Ne faites pas fonctionner votre présentation sale de SQL Server, particulièrement quand vous avez much more flexible features in a more powerful language.

0

Cela m'a donné ce que je voulais.

, sous-chaîne (convertir (varchar (40), t2.CSM_START_TIME, 109), 12,9) + » « + sous-chaîne (convertir (varchar (40), t2.CSM_START_TIME, 109), 25,2)