2010-04-14 4 views

Répondre

2
CONVERT(nvarchar, @lastEndTime, 121) 
3

vraiment horriblement, pour obtenir un format précis, vous devez utiliser la fonction datepart et construire.

select datepart(yyyy, @lastEndTime) + '-' + datepart(mm, @lastEndTime) + '-' + datepart(dd, @lastEndTime) +' ' + datepart(hh, @lastEndTime) + ':' + datepart(mm, @lastEndTime) + ':' + datepart(ss, @lastEndTime) + '.' + datepart(ms,@lastEndTime) 

Vous pouvez le définir comme un function pour la facilité d'utilisation bien.

Edit - comme on l'a souligné, ce format se trouve être une norme -

ODBC canonique si
CONVERT(CHAR(23), @lastEndTime, 121) 

devrait le faire.

+0

beurk qui suce – Kevin

+1

ouais, ça fait. Heureusement, vous n'avez pas à le faire pour le format canonique ODBC ci-dessus. –

+0

bon point @andras - c'est 121 je pense. Je me suis tellement habitué à faire des formats bizarres que je l'ai toujours fait manuellement (ce qui est évidemment mal quand il s'agit de performance). Doit mettre à jour la réponse. –

3

Consultez la documentation MSDN Books Online pour CAST and CONVERT - il contient une liste complète de tous les formats de date intégrés pris en charge que vous pouvez utiliser avec CONVERT.

E.g.

CONVERT(VARCHAR(50), GETDATE(), 100) 

convertira la date d'aujourd'hui et le temps d'une chaîne dans le format mon dd yyyy hh:miAM (or PM).

Si votre chaîne ne correspond pas à l'un de ces formats, alors vous devez soit

  • utilisez la fonction DATEPART pour extraire des morceaux de votre DATETIME et concaténer qui, ensemble, manuellement
  • utilisation SQLCLR et. NET DateTime fonction pour le faire dans une fonction SQL-CLR définie par l'utilisateur
  • ne pas le faire dans SQL Server et renvoyer le DATETIME au client appelant et laisser l'appelant gérer la conversion au format de présentation réel