Pour obtenir "25-Oct-2010"
En supposant que la valeur est fournie sous forme de chaîne, et non de type de données DATETIME :
SELECT REPLACE(CONVERT(VARCHAR, CAST('2010-10-25 11:13:36.700' AS DATETIME), 106), ' ', '-')
Consultez la documentation CAST/CONVERT pour les autres formats, bien que celui que vous avez demandé nécessite un post-traitement.
Pour obtenir "2010-10-25 00:00:00.000"
Le moyen le plus performant est d'utiliser DATEADD &DATEDIFF :
SELECT DATEADD(d, DATEDIFF(dd, 0, '2010-10-25 11:13:36.700'), 0)
Références :
Test
WITH sample AS (
SELECT CAST('2010-10-25 11:13:36.700' AS DATETIME) dt)
SELECT REPLACE(CONVERT(VARCHAR, s.dt, 106), ' ', '-') AS col1,
DATEADD(d, DATEDIFF(dd, 0, s.dt), 0) AS col2
FROM sample s
Renvoie :
col1 col2
-------------------------------------
25-Oct-2010 2010-10-25 00:00:00.000
Avenant
Étant donné que vous êtes sur SQL Server 2005, vous pouvez vous faciliter la mise en forme de la date en créant une fonction SQLCLR qui vous permettrait d'utiliser la mise en forme de la date .NET.