¿Cómo recupero una fecha de SQL Server en YYYY-MM-DD
formato? Necesito esto para trabajar con SQL Server 2000 y versiones posteriores. ¿Hay una manera simple de realizar esto en SQL Server o sería más fácil convertirlo mediante programación después de recuperar el conjunto de resultados?
He leído CAST y CONVERT en Microsoft Technet, pero el formato que quiero no aparece en la lista y cambiar el formato de fecha no es una opción.
sql-server
tsql
Kinze
fuente
fuente
Respuestas:
Limitar el tamaño de las chuletas varchar de la porción de hora que no desea.
fuente
fuente
A partir de SQL Server 2012 (la pregunta original es para 2000):
SELECT FORMAT(GetDate(), 'yyyy-MM-dd')
fuente
El formulario que busca aparece en la documentación en línea de los libros.
http://msdn.microsoft.com/en-us/library/aa226054(SQL.80).aspx
Por ejemplo, intente lo siguiente:
fuente
La
convert
función con el especificador de formato 120 le dará el formato "aaaa-MM-dd HH: mm: ss", por lo que solo tiene que limitar la longitud a 10 para obtener solo la parte de la fecha:Sin embargo, las fechas de formateo generalmente son mejores en la capa de presentación que en la capa de base de datos o de negocios. Si devuelve la fecha formateada desde la base de datos, entonces el código del cliente debe analizarla nuevamente en una fecha si necesita hacer algún cálculo en ella.
Ejemplo en C #:
fuente
Para YYYYMMDD intente
Solo he probado en SQLServer2008.
fuente
Otra forma ...
fuente
Para aquellos que quieran la parte del tiempo también (lo hice), el siguiente fragmento puede ayudar
fuente
También hará truco sin "cortar nada".
fuente
En caso de que alguien quiera hacerlo al revés y encuentre esto.
Esto convierte una cadena en el formato de fecha alemán en un objeto de fecha y hora.
¿Por qué 104? Ver aquí: http://msdn.microsoft.com/en-us/library/ms187928.aspx
fuente
En su enlace de conversión y conversión, use el estilo 126 así:
CONVERT (varchar(10), DTvalue, 126)
Esto trunca el tiempo. Su requisito de tenerlo en aaaa-mm-dd significa que debe ser un tipo de datos de cadena y fecha y hora.
Francamente, lo haría en el cliente a menos que tenga buenas razones para no hacerlo.
fuente
Si desea usarlo como una fecha en lugar de una
varchar
vez más después, no olvide volver a convertirlo:fuente
No estoy seguro de por qué la forma más simple ha sido ignorada / omitida en las respuestas anteriores:
¡Prefiero el segundo porque, sea cual sea el idioma que hable, comprenderá la fecha que es!
Además, SQL Server siempre lo 'entiende' cuando lo envía a su procedimiento de guardado, independientemente de qué formatos regionales estén configurados en las computadoras: siempre uso el año completo (aaaa), el nombre del mes (MMM) y el formato de 24 horas (capital HH) por hora en mi programación.
fuente
SELECT CONVERT(NVARCHAR(20), GETDATE(), 23)
fuente
También puedes usar. Esto es mediante el uso del nuevo tipo de datos
DATE
. Puede no funcionar en todas las versiones anteriores, pero se simplifica enormemente su uso en versiones posteriores.fuente
Yo usaría:
fuente
fuente
Desde SQL Server 2008 puede hacer esto:
CONVERT(date,getdate())
fuente
Parece innecesario hacer cosas extrañas, si quieres que tu fecha sea separada por una barra. Solo escapa con una barra invertida. De lo contrario, terminarás con un punto.
Probado en SQL Server 2016
fuente
Usar una declaración CASE para cada una de las funciones de conversión / conversión siempre funciona para mí:
Espero que esto haya sido útil. Chagbert.
fuente
Esta solución funciona para mí, simple y efectiva (con 126 también)
fuente
Si su formato de fecha de origen está desordenado, intente algo como:
fuente
fuente