Saltar al contenido

Consulta Sql para insertar fecha y hora en SQL Server

Posteriormente a investigar con expertos en esta materia, programadores de varias áreas y maestros dimos con la solución a la cuestión y la plasmamos en esta publicación.

Solución:

Querrá usar AAAAMMDD para determinar la fecha sin ambigüedades en SQL Server.

insert into table1(approvaldate)values('20120618 10:34:09 AM');

Si está casado con el dd-mm-yy hh:mm:ss xm formato, necesitará usar CONVERT con el estilo específico.

insert into table1 (approvaldate)
       values (convert(datetime,'18-06-12 10:34:09 PM',5));

5 aquí está el estilo para las fechas italianas. Bueno, no solo los italianos, sino que esa es la cultura a la que se atribuye en Books Online.

Una opción más independiente del idioma para string literales es el formato estándar internacional ISO 8601 “YYYY-MM-DDThh:mm:ss”. Utilicé la consulta SQL a continuación para probar el formato y, de hecho, funciona en todos los lenguajes SQL en sys.syslanguages:

declare @sql nvarchar(4000)

declare @LangID smallint
declare @Alias sysname

declare @MaxLangID smallint
select @MaxLangID = max(langid) from sys.syslanguages

set @LangID = 0

while @LangID <= @MaxLangID
begin

    select @Alias = alias
    from sys.syslanguages
    where langid = @LangID

    if @Alias is not null
    begin

        begin try
            set @sql = N'declare @TestLang table (langdate datetime)
    set language ''' + @alias + N''';
    insert into @TestLang (langdate)
    values (''2012-06-18T10:34:09'')'
            print 'Testing ' + @Alias

            exec sp_executesql @sql
        end try
        begin catch
            print 'Error in language ' + @Alias
            print ERROR_MESSAGE()
        end catch
    end

    select @LangID = min(langid)
    from sys.syslanguages
    where langid > @LangID
end

De acuerdo con la sección Formatos de fecha y hora literales de cadena en Microsoft TechNet, se supone que el formato de fecha SQL estándar ANSI estándar “AAAA-MM-DD hh: mm: ss” es “multilingüe”. Sin embargo, al usar la misma consulta, el formato ANSI no funciona en todos los lenguajes SQL.

Por ejemplo, en danés, verá muchos errores como los siguientes:

Error en idioma danés La conversión de un tipo de datos varchar a un tipo de datos de fecha y hora resultó en un valor fuera de rango.

Si desea crear una consulta en C# para ejecutarla en SQL Server y necesita pasar una fecha en el formato ISO 8601, use el especificador de formato Sortable “s”:

string.Format("select convert(datetime2, '0:s'", DateTime.Now);

Management studio crea guiones como:

insert table1 (foodate) values(CAST(N'2012-06-18 10:34:09.000' AS DateTime))

Te mostramos reseñas y calificaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *