none
SQL 2008 R2 Express ______ Problema con Scrppt di INSERT DateTime RRS feed

  • Domanda

  • Mi sto perdendo in un bicchiere di acqua

    Uso SQL2008R2 Express
    Devo inserire dei dati in formato DateTime usando un INSERT

    la procedura va a buon fine ma le date inserite non corrispondono a quanto
    avevo specificato nell'INSERT

    __________________________________________________________________

    Ad esempio se io nello script di insert metto:
         VALUES
               (2011/01/30, 2011-01-30),
               (2011/30/01, 2011-30-01),
               (01/30/2011, 01-30-2011),
               (30/01/2011, 30-01-2011)

    Mi ritrovo con i seguenti dati in Tabella:
    __1900-03-09 00:00:00.000____1905-06-04 00:00:00.000____1__
    __1900-03-09 00:00:00.000____1905-06-04 00:00:00.000____2__
    __1900-01-01 00:00:00.000____1894-06-01 00:00:00.000____3__
    __1900-01-01 00:00:00.000____1894-07-29 00:00:00.000____4__

    ___________________________________________________________________

    Come la devo scrivere la data nello Script per
    ritrovarla correttamente nella tabella ????????

    ___________________________________________________________________
    Di seguito posto lo script di createTable  e Insert

     

    /* __________Definisco il Data Base   di MSSQL 2008 R2 Express  */
    USE [Prove]
    GO
    
    
    /* __________Creo la tabella dbo.TA   */
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE TABLE [dbo].[TA](
     [Da1] [datetime] NULL,
     [Da2] [datetime] NULL,
     [Id] [int] IDENTITY(1,1) NOT NULL,
     CONSTRAINT [PK_TA] PRIMARY KEY CLUSTERED 
    (
     [Id] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    GO
    
    
    /* __________Inserisco 4 record   */
    INSERT INTO [Prove].[dbo].[TA]
               ([Da1] ,[Da2])
         VALUES
               (2011/01/30, 2011-01-30),
               (2011/30/01, 2011-30-01),
               (01/30/2011, 01-30-2011),
               (30/01/2011, 30-01-2011)
    GO
    
    
    /* __________Finito senza errori   */
    /* __________Ma in tabella trovo delle altre date  */
    
    
    

     

    Grazie
    • Modificato Mancini, giovedì 8 dicembre 2011 14:22
    giovedì 8 dicembre 2011 14:14

Risposte

  • Ciao renarig,

    per passare una data a SQL Server occorre scriverla come stringa, ad esempio

    INSERT INTO Test (Data) VALUES ('20110130'), ('2011-12-31'),('2011-12-31T12:54:50'),('2011-12-31 00:00:00.000')

    Per essere indipendente dalle impostazioni di lingua e formato data specificati con i comandi SET LANGUAGE, SET DATEFORMAT o nelle impostazioni della connessione, puoi usare il formato ISO8601.

    Ti segnalo questi due links:

    Using date and time (dal BOL)

    The ultimate guide to the datetime datatype

    HTH


    Danilo Dominici MCP MCDBA MCITP MCSE MCAD Questo post è fornito "così com'è". Non conferisce garanzie o diritti di alcun tipo. Ricorda di usare la funzione "segna come risposta" per i post che ti hanno aiutato a risolvere il problema e "deseleziona come risposta" quando le risposte segnate non sono effettivamente utili. Questo è particolarmente utile per altri utenti che leggono il thread, alla ricerca di soluzioni a problemi similari. ENG: This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.
    • Contrassegnato come risposta Mancini, giovedì 8 dicembre 2011 18:01
    giovedì 8 dicembre 2011 14:53

Tutte le risposte

  • Ciao renarig,

    per passare una data a SQL Server occorre scriverla come stringa, ad esempio

    INSERT INTO Test (Data) VALUES ('20110130'), ('2011-12-31'),('2011-12-31T12:54:50'),('2011-12-31 00:00:00.000')

    Per essere indipendente dalle impostazioni di lingua e formato data specificati con i comandi SET LANGUAGE, SET DATEFORMAT o nelle impostazioni della connessione, puoi usare il formato ISO8601.

    Ti segnalo questi due links:

    Using date and time (dal BOL)

    The ultimate guide to the datetime datatype

    HTH


    Danilo Dominici MCP MCDBA MCITP MCSE MCAD Questo post è fornito "così com'è". Non conferisce garanzie o diritti di alcun tipo. Ricorda di usare la funzione "segna come risposta" per i post che ti hanno aiutato a risolvere il problema e "deseleziona come risposta" quando le risposte segnate non sono effettivamente utili. Questo è particolarmente utile per altri utenti che leggono il thread, alla ricerca di soluzioni a problemi similari. ENG: This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.
    • Contrassegnato come risposta Mancini, giovedì 8 dicembre 2011 18:01
    giovedì 8 dicembre 2011 14:53
  • Perfetto    Grazie

     

    Il problema era proprio di lingua  ( io uso tutto Italiano ) e ho risolto
    seguendo il tuo consiglio con  ISO8601  " ('2011-12-31T12:54:50') "

     

          Saluti

    giovedì 8 dicembre 2011 18:00