Convert to date type 'yyyy-mm-dd'

Asked

Viewed 1,018 times

4

I have a problem trying to modify the type of date that appears to me in two columns of a table of mine.

This is my code:

declare @top10reclamacoes varchar(max)
declare @html varchar(max)
declare @numero_reclamacoes_abertas_mes integer 
declare @numero_reclamacoes_fechadas_mes integer
declare @startofcurrentmonth datetime


  SELECT CONVERT(DATETIME, R.Data, 111) AS Data
    FROM Reclamacoes R



SELECT @numero_reclamacoes_abertas_mes = count(*)
FROM Reclamacoes R
WHERE R.Data >= DATEADD(month, -1, @startOfCurrentMonth)


set @html = '<html>
<body>
<font face="verdana" size="6"><b><u><center>INFORMAÇÃO PARA TODA A EMPRESA</center></u></b></font><br>
<br>
<font face ="verdana "size="5"><b><center>Número reclamações abertas este mês:' + convert(varchar(50), @numero_reclamacoes_abertas_mes)

SELECT @numero_reclamacoes_fechadas_mes = count(*)
FROM Reclamacoes R
WHERE R.DataConclusao >= DATEADD(month, -1, @startOfCurrentMonth)
And Tratado = 1

set @html = @html + '<br><br>Número reclamações fechadas este mês:' + convert(varchar(50), @numero_reclamacoes_fechadas_mes)


Select top 10 @html = @html + '<tr><td>' + convert(nvarchar(50), ID) + '</td><td>' + convert(datetime, R.Data) + '</td><td>' + ISNULL(convert(nvarchar(50),DataConclusao) , '') + '</td><td>' + convert(nvarchar(max), Exposicao) + '</td><td>' + convert(nvarchar(50), Tratado) + '</td></tr>' 
From Reclamacoes R 
Order by R.Data ASC

set @html = @html + '</html></table>'

print @html

Where are the fields R.Data and R.DataConclusao, the format of the date type is 2018-11-27 00:00:00.0000000 and what I want is 2018-11-27.

Can anyone help me? Thanks in advance.

3 answers

4

SELECT CONVERT(char(10), GETDATE(), 126);

Set size 10 separates time from date.

In the link below CAST and CONVERT (Transact-SQL) - Date and time styles from the documentation you can check the codes corresponding to the date conversions;

Conversions available:

╔═════════════════╦═══════════════════╦═══════════════════════════════════╦════════════════════════════════════════╗
║ Sem século (AA) ║ Com século (aaaa) ║ Standard                          ║ Entrada/saída (3)                      ║
╠═════════════════╬═══════════════════╬═══════════════════════════════════╬════════════════════════════════════════╣
║ -               ║ 0 ou 100 (1,2)    ║ Padrão para datetime e            ║ mês dd aaaa hh:miAM (ou PM)            ║
║                 ║                   ║ smalldatetime                     ║                                        ║
╠═════════════════╬═══════════════════╬═══════════════════════════════════╬════════════════════════════════════════╣
║ 1               ║ 101               ║ EUA                               ║ 1 = mm/dd/aa                           ║
║                 ║                   ║                                   ║ 101 = mm/dd/aaaa                       ║
╠═════════════════╬═══════════════════╬═══════════════════════════════════╬════════════════════════════════════════╣
║ 3               ║ 103               ║ Britânico/francês                 ║ 3 = dd/mm/aa                           ║
║                 ║                   ║                                   ║ 103 = dd/mm/aaaa                       ║
╠═════════════════╬═══════════════════╬═══════════════════════════════════╬════════════════════════════════════════╣
║ 4               ║ 104               ║ Alemão                            ║ 4 = dd.mm.aa                           ║
║                 ║                   ║                                   ║ 104 = dd.mm.aaaa                       ║
╠═════════════════╬═══════════════════╬═══════════════════════════════════╬════════════════════════════════════════╣
║ 5               ║ 105               ║ Italiano                          ║ 5 = dd-mm-aa                           ║
║                 ║                   ║                                   ║ 105 = dd-mm-aaaa                       ║
╠═════════════════╬═══════════════════╬═══════════════════════════════════╬════════════════════════════════════════╣
║ 6               ║ 106 (1)           ║ -                                 ║ 6 = dd mês aa                          ║
║                 ║                   ║                                   ║ 106 = dd mês aaaa                      ║
╠═════════════════╬═══════════════════╬═══════════════════════════════════╬════════════════════════════════════════╣
║ 7               ║ 107 (1)           ║ -                                 ║ 7 = Mês dd, aa                         ║
║                 ║                   ║                                   ║ 107 = Mês dd, aaaa                     ║
╠═════════════════╬═══════════════════╬═══════════════════════════════════╬════════════════════════════════════════╣
║ 8               ║ 108               ║ -                                 ║ hh:mi:ss                               ║
╠═════════════════╬═══════════════════╬═══════════════════════════════════╬════════════════════════════════════════╣
║ -               ║ 9 ou 109          ║ Padrão + milissegundos            ║ mês dd aaaa hh:mi:ss:mmmAM (ou PM)     ║
╠═════════════════╬═══════════════════╬═══════════════════════════════════╬════════════════════════════════════════╣
║ 10              ║ 110               ║ EUA                               ║ 10 = mm-dd-aa                          ║
║                 ║                   ║                                   ║ 110 = mm-dd-aaaa                       ║
╠═════════════════╬═══════════════════╬═══════════════════════════════════╬════════════════════════════════════════╣
║ 11              ║ 111               ║ JAPÃO                             ║ 11 = aa/mm/dd                          ║
║                 ║                   ║                                   ║ 111 = aaaa/mm/dd                       ║
╠═════════════════╬═══════════════════╬═══════════════════════════════════╬════════════════════════════════════════╣
║ 12              ║ 112               ║ ISO                               ║ 12 = aammdd                            ║
║                 ║                   ║                                   ║ 112 = aaaammdd                         ║
╠═════════════════╬═══════════════════╬═══════════════════════════════════╬════════════════════════════════════════╣
║ -               ║ 13 ou 113         ║ Padrão Europa + milissegundos     ║ dd mês aaaa hh:mi:ss:mmm (24h)         ║
╠═════════════════╬═══════════════════╬═══════════════════════════════════╬════════════════════════════════════════╣
║ 14              ║ 114               ║ -                                 ║ hh:mi:ss:mmm(24h)                      ║
╠═════════════════╬═══════════════════╬═══════════════════════════════════╬════════════════════════════════════════╣
║ -               ║ 20 or 120 (2)     ║ ODBC canônico                     ║ aaaa-mm-dd hh:mi:ss(24h)               ║
╠═════════════════╬═══════════════════╬═══════════════════════════════════╬════════════════════════════════════════╣
║ -               ║ 21 or 121 (2)     ║ ODBC canônico (com milissegundos) ║ aaaa-mm-dd hh:mi:ss(24h)               ║
║                 ║                   ║ padrão para hora, data, datetime2 ║                                        ║
║                 ║                   ║ e datetimeoffset                  ║                                        ║
╠═════════════════╬═══════════════════╬═══════════════════════════════════╬════════════════════════════════════════╣
║ -               ║ 126 (4)           ║ ISO8601                           ║ aaaa-mm-ddThh:mi:ss.mmm (sem espaços)  ║
║                 ║                   ║                                   ║                                        ║
║                 ║                   ║                                   ║ Observação: Quando o valor de          ║
║                 ║                   ║                                   ║ milissegundos (mmm) for 0, o valor de  ║
║                 ║                   ║                                   ║ milissegundos não é exibido. Por       ║
║                 ║                   ║                                   ║ exemplo, o valor                       ║
║                 ║                   ║                                   ║ '2012-11-07T18:26:20.000' é exibido    ║
║                 ║                   ║                                   ║ como '2012-11-07T18:26:20'.            ║
╠═════════════════╬═══════════════════╬═══════════════════════════════════╬════════════════════════════════════════╣
║ -               ║ 127(6, 7)         ║ ISO8601 com fuso horário Z.       ║ aaaa-mm-ddThh:mi:ss.mmmZ (sem espaços) ║
║                 ║                   ║                                   ║                                        ║
║                 ║                   ║                                   ║ Observação: Quando o valor de          ║
║                 ║                   ║                                   ║ milissegundos (mmm) for 0, o valor de  ║
║                 ║                   ║                                   ║ milissegundos não é exibido. Por       ║
║                 ║                   ║                                   ║ exemplo, o valor                       ║
║                 ║                   ║                                   ║ '2012-11-07T18:26:20.000' é exibido    ║
║                 ║                   ║                                   ║ como '2012-11-07T18:26:20'.            ║
╠═════════════════╬═══════════════════╬═══════════════════════════════════╬════════════════════════════════════════╣
║ -               ║ 130 (1, 2)        ║ Hijri (5)                         ║ dd mmm aaaa hh:mi:ss:mmmAM             ║
║                 ║                   ║                                   ║                                        ║
║                 ║                   ║                                   ║ Neste estilo, mon representa uma       ║
║                 ║                   ║                                   ║ representação unicode Hijri de vários  ║
║                 ║                   ║                                   ║ tokens do nome completo do mês. Este   ║
║                 ║                   ║                                   ║ valor não será renderizado corretamente║
║                 ║                   ║                                   ║ em uma instalação US padrão do SSMS.   ║
╠═════════════════╬═══════════════════╬═══════════════════════════════════╬════════════════════════════════════════╣
║ -               ║ 131 (2)           ║ Hijri (5)                         ║ dd/mm/aaaa hh:mi:ss:mmmAM              ║
╚═════════════════╩═══════════════════╩═══════════════════════════════════╩════════════════════════════════════════╝
  • (1) these style values return nondeterministic results. Include all styles (aa) (no century) and a subset of styles (aaaa) (with century).
  • (2) The default values (style 0 or 100, 9 or 109, 13 or 113, 20 or 120, and 21 or 121) always return the century (yyyy).
  • (3) input when you convert to datetime; output when you convert character data.
  • (4) designed for XML use. For conversion of datetime or smalldatetime output format character data is as described in the previous table.
  • (5) Hijri is a calendar system with many variations. SQL Server uses the Kuwaiti algorithm.
  • and how do I put this into practice? can you help me? blz

  • @Miguelmeireles tests the code I put in the answer you will understand how to use

  • 1

    grateful for your help, thanks.

2


I figured out the mistake. The error would be in the code part:

convert(datetime, R.Data)
ISNULL(convert(nvarchar(50),DataConclusao)

And the solution to the same is:

convert(char(10), R.Data)
convert(char(10), R.DataConclusao)

Thanks in advance for the help of @Sorack, but the answer did not help me 100%.

1

You can use the FORMAT, as in the example below:

SELECT FORMAT(getdate(), 'yyyy-MM-dd') as DataFormatada
  • I already tried to do this, but it turns out that after I only see the column of the formatted date, the rest of the code disappears

  • 1

    Man, I think your code is wrong.

  • Yeah, and I don’t know where. the code I have, it does, but I was asked to change the time to that, and now I’m not finding a way to fix it.

  • 1

    The code that Voce posted works? Because I tried to run it site here and did not succeed. :(

  • It’s normal not to work on your guy, this code is for my company, you don’t have the created tables that I have. but I’ve found the solution for that, I hope it’s clear

Browser other questions tagged

You are not signed in. Login or sign up in order to post.