yyyy query convertir convert sql sql-server datetime sql-convert

sql - query - Cómo convertir DateTime a VarChar



sql convert time to varchar (19)

- Esto le da el tiempo como 0 en el formato ''aaaa-mm-dd 00: 00: 00.000''

SELECT CAST( CONVERT(VARCHAR, GETDATE(), 101) AS DATETIME) ;

Estoy trabajando en una consulta en Sql Server 2005 donde necesito convertir un valor en la variable DateTime en una variable varchar en formato yyyy-mm-dd (sin la parte de tiempo). ¿Cómo puedo hacer eso?


Aquí hay algunos sql de prueba para todos los estilos.

DECLARE @now datetime SET @now = GETDATE() select convert(nvarchar(MAX), @now, 0) as output, 0 as style union select convert(nvarchar(MAX), @now, 1), 1 union select convert(nvarchar(MAX), @now, 2), 2 union select convert(nvarchar(MAX), @now, 3), 3 union select convert(nvarchar(MAX), @now, 4), 4 union select convert(nvarchar(MAX), @now, 5), 5 union select convert(nvarchar(MAX), @now, 6), 6 union select convert(nvarchar(MAX), @now, 7), 7 union select convert(nvarchar(MAX), @now, 8), 8 union select convert(nvarchar(MAX), @now, 9), 9 union select convert(nvarchar(MAX), @now, 10), 10 union select convert(nvarchar(MAX), @now, 11), 11 union select convert(nvarchar(MAX), @now, 12), 12 union select convert(nvarchar(MAX), @now, 13), 13 union select convert(nvarchar(MAX), @now, 14), 14 --15 to 19 not valid union select convert(nvarchar(MAX), @now, 20), 20 union select convert(nvarchar(MAX), @now, 21), 21 union select convert(nvarchar(MAX), @now, 22), 22 union select convert(nvarchar(MAX), @now, 23), 23 union select convert(nvarchar(MAX), @now, 24), 24 union select convert(nvarchar(MAX), @now, 25), 25 --26 to 99 not valid union select convert(nvarchar(MAX), @now, 100), 100 union select convert(nvarchar(MAX), @now, 101), 101 union select convert(nvarchar(MAX), @now, 102), 102 union select convert(nvarchar(MAX), @now, 103), 103 union select convert(nvarchar(MAX), @now, 104), 104 union select convert(nvarchar(MAX), @now, 105), 105 union select convert(nvarchar(MAX), @now, 106), 106 union select convert(nvarchar(MAX), @now, 107), 107 union select convert(nvarchar(MAX), @now, 108), 108 union select convert(nvarchar(MAX), @now, 109), 109 union select convert(nvarchar(MAX), @now, 110), 110 union select convert(nvarchar(MAX), @now, 111), 111 union select convert(nvarchar(MAX), @now, 112), 112 union select convert(nvarchar(MAX), @now, 113), 113 union select convert(nvarchar(MAX), @now, 114), 114 union select convert(nvarchar(MAX), @now, 120), 120 union select convert(nvarchar(MAX), @now, 121), 121 --122 to 125 not valid union select convert(nvarchar(MAX), @now, 126), 126 union select convert(nvarchar(MAX), @now, 127), 127 --128, 129 not valid union select convert(nvarchar(MAX), @now, 130), 130 union select convert(nvarchar(MAX), @now, 131), 131 --132 not valid order BY style

Aquí está el resultado

output style Apr 28 2014 9:31AM 0 04/28/14 1 14.04.28 2 28/04/14 3 28.04.14 4 28-04-14 5 28 Apr 14 6 Apr 28, 14 7 09:31:28 8 Apr 28 2014 9:31:28:580AM 9 04-28-14 10 14/04/28 11 140428 12 28 Apr 2014 09:31:28:580 13 09:31:28:580 14 2014-04-28 09:31:28 20 2014-04-28 09:31:28.580 21 04/28/14 9:31:28 AM 22 2014-04-28 23 09:31:28 24 2014-04-28 09:31:28.580 25 Apr 28 2014 9:31AM 100 04/28/2014 101 2014.04.28 102 28/04/2014 103 28.04.2014 104 28-04-2014 105 28 Apr 2014 106 Apr 28, 2014 107 09:31:28 108 Apr 28 2014 9:31:28:580AM 109 04-28-2014 110 2014/04/28 111 20140428 112 28 Apr 2014 09:31:28:580 113 09:31:28:580 114 2014-04-28 09:31:28 120 2014-04-28 09:31:28.580 121 2014-04-28T09:31:28.580 126 2014-04-28T09:31:28.580 127 28 جمادى الثانية 1435 9:31:28:580AM 130 28/06/1435 9:31:28:580AM 131

Haga nvarchar(max) más corto para recortar el tiempo. Por ejemplo:

select convert(nvarchar(11), GETDATE(), 0) union select convert(nvarchar(max), GETDATE(), 0)

salidas:

May 18 2018 May 18 2018 9:57AM


Así es como lo hago: CONVERT(NVARCHAR(10), DATE1, 103) )


Con Microsoft SQL Server:

Use la sintaxis para CONVERTIR:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Ejemplo:

SELECT CONVERT(varchar,d.dateValue,1-9)

Para el estilo, puede encontrar más información aquí: MSDN - Conversión y conversión (Transact-SQL) .


Con Microsoft SQL Server:

-- -- Create test case -- DECLARE @myDateTime DATETIME SET @myDateTime = ''2008-05-03'' -- -- Convert string -- SELECT LEFT(CONVERT(VARCHAR, @myDateTime, 120), 10)


El OP menciona el formato de fecha y hora . Para mí, la parte del tiempo se interpone en el camino.
Creo que es un poco más limpio eliminar la parte del tiempo (lanzando datetime hasta la fecha) antes de formatear.

convert( varchar(10), convert( date, @yourDate ) , 111 )




La forma más corta y sencilla es:

DECLARE @now AS DATETIME = GETDATE() SELECT CONVERT(VARCHAR, @now, 23)


No dice qué idioma, pero asumo que C#/.NET porque tiene un tipo de datos DateTime nativo. En ese caso, simplemente ToString utilizando el método ToString y use un especificador de formato como:

DateTime d = DateTime.Today; string result = d.ToString("yyyy-MM-dd");

Sin embargo, le advierto que no utilice esto en una consulta de base de datos o concatenado en una declaración SQL. Las bases de datos requieren una cadena de formato específica para ser utilizada. Es mejor que ponga a cero la parte del tiempo y utilice el DateTime como un parámetro SQL si eso es lo que está tratando de lograr.


No dijo qué base de datos, pero con mysql aquí es una manera fácil de obtener una fecha de una marca de tiempo (y la conversión de tipo varchar debería ocurrir automáticamente):

mysql> select date(now()); +-------------+ | date(now()) | +-------------+ | 2008-09-16 | +-------------+ 1 row in set (0.00 sec)


Prueba este SQL:

select REPLACE(CONVERT(VARCHAR(24),GETDATE(),103),''/'',''_'') + ''_''+ REPLACE(CONVERT(VARCHAR(24),GETDATE(),114),'':'',''_'')


Puede utilizar DATEPART(DATEPART, VARIABLE) . Por ejemplo:

DECLARE @DAY INT DECLARE @MONTH INT DECLARE @YEAR INT DECLARE @DATE DATETIME @DATE = GETDATE() SELECT @DAY = DATEPART(DAY,@DATE) SELECT @MONTH = DATEPART(MONTH,@DATE) SELECT @YEAR = DATEPART(YEAR,@DATE)


Puedes convertir tu fecha en muchos formatos, la sintaxis es fácil de usar:

CONVERT(''TheTypeYouWant'', ''TheDateToConvert'', ''TheCodeForFormating'' * ) CONVERT(NVARCHAR(10), DATE_OF_DAY, 103) => 15/09/2016

  • El código es un entero, aquí 3 es el tercer formateo sin siglo, si desea que el siglo cambie el código a 103.

En su caso , acabo de convertir y restringir el tamaño por nvarchar (10) de esta manera:

CONVERT(NVARCHAR(10), MY_DATE_TIME, 120) => 2016-09-15

Ver más en: http://www.w3schools.com/sql/func_convert.asp

Otra solución (si su fecha es Datetime) es un simple CAST :

CAST(MY_DATE_TIME as DATE) => 2016-09-15



Tratar:

select replace(convert(varchar, getdate(), 111),''/'',''-'');

Más sobre ms sql tips


Ya sea Cast o Convert :

Sintaxis para CAST :

CAST ( expression AS data_type [ (length ) ])

Sintaxis para CONVERT :

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

http://msdn.microsoft.com/en-us/library/ms187928.aspx

En realidad ya que pediste un formato específico:

REPLACE(CONVERT(varchar(10), Date, 102), ''.'', ''-'')


CONVERT(VARCHAR, GETDATE(), 23)


declare @dt datetime set @dt = getdate() select convert(char(10),@dt,120)

He fijado la longitud de datos de char(10) como desea un formato de cadena específico.