Everything will depend on the format of your date. With format 101 you are specifying which format is mm/dd/aaaa
. The code below returns the date 21/06/2017
:
DECLARE @data varchar(10) = '06/21/2017';
SELECT CONVERT(DATETIME, @data, 101);
If you are using the Brazilian format you must use code 103 for the conversion:
DECLARE @data varchar(10) = '21/06/2017';
SELECT CONVERT(DATETIME, @data, 103);
You cannot update directly to your view
, then you should change the definition of it to something like below:
ALTER VIEW temp_vertical_dashboard AS (
SELECT CONVERT(DATETIME, t.data, 101) AS data
FROM tabela t
)
In the documentation CAST and CONVERT (Transact-SQL) - Date and time styles 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 standard values (style0 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.
Which database?
– Camilo Santos
Thank you for answering Camilo. is Sql server
– Gladiador
cast(data as datetime)
– Marconi
@Marconi can tell me the specific function of this "CAST" and tbm would like to know using this which type of format will give me?
– Gladiador
the cast will return what is after "as", with this will give you datetime
– Don't Panic
@Kelvin
convert (datetime,data)
without the '101' works too. Take a look CAST– Marconi
@Marconi tried to make this way update temp_vertical_dashboard set data = Convert(datetime,data) and gave me Message 4406, Level 16, State 1, Line 3 Failed to update or insert the display or function 'temp_vertical_dashboard' because it contains a derived or constant field.
– Gladiador
Thanks @Emerson for the explanation I’ll tbm go deep a little researching on this.
– Gladiador
So far everything I’ve tried makes this message appear:Ç Message 4406, Level 16, Status 1, Line 3 Failed to update or insert the display or 'temp_vertical_dashboard' function because it contains a derived or constant field.
– Gladiador
@Kelvin asked a question here about: https://answall.com/questions/214275/qual-a-diferen%C3%A7a-entre-cast-e-convert
– Marconi
@Marconi good! I will see the staff’s response to have more ideá on the subject
– Gladiador
See this Sopt
– Ivan Ferrer
@Ivan Ferrer, which parameter do I pass inside getdate()? and this query will only list,but I need you to update by converting my column from varchar to datetime. Maybe I explained wrong
– Gladiador