2014-11-17 7 views
7

Utilizzo SQL Server 2012 Express. Il database ha una tabella [config] con un membro di tipo 'datetime'. Esportarlo (solo dati) da Management Studio come viene generato lo script SQL:MS SQL Server 2012 esporta datetime come script che non è possibile importare

INSERISCI [dbo]. [Config] ([id], [nome], [data_della creazione], ...) VALORI (13, N'Test ', CAST (N'2014-11-17 09: 29: 07.047' AS DateTime), ...)

Ora quando si esegue lo script generato si lamenta che il valore per il tipo di datetime non è valido. Posso correggerlo manualmente sostituendo il bianco tra la data e l'ora con una "T":

INSERISCI [dbo]. [Config] ([id], [nome], [data_della creazione], ...) VALORI (13, N'Test', CAST (N'2014-11-17 T 09: 29: 07,047' AS DateTime), ...)

Guardando al docmentation del datetime, il formato utilizzando un vuoto sembra non essere supportato.

Come posso generare script con formato datetime supportato (vale a dire la "T")?

Come posso importare il formato che utilizza uno spazio vuoto senza modificare lo script importato?

BTW, sembra che funzioni su altre installazioni di SQL Server, ma non riesco a trovare la differenza. Anche la disinstallazione e la reinstallazione di SQL Server non hanno aiutato.

+0

Quali tipi di formattazione datetime sono accettati è controllato dalle Impostazioni internazionali in Windows sul server. Forse le altre installazioni di SQL Server (su altri server) hanno altre impostazioni internazionali. –

+0

Questo problema è stato risolto in SQL Server 2014, ma per SQL Server 2012 è necessaria la riga suggerita da Mikael –

risposta

10

Come è possibile importare il formato che utilizza uno spazio vuoto senza modificare lo script importato ?

È necessario modificare lo script di importazione, ma solo un po '. Specificare dateformat come ymd all'inizio dello script.

set dateformat ymd; 

Come si genera script con formato supportato datetime (vale a dire incl. la 'T')?

Votate per cambiare ...

"Generate scripts" for data, scripts datetime in a locale dependent format

+1

Non è possibile modificare lo script importato da quando è stato generato (da Management Studio). Quindi la mia domanda era "Come posso importare ... ** senza cambiare ** lo script importato?". Tuttavia, grazie per aver inserito il ticket per questo bug. – user2261015

+0

Perché è quello? È solo testo e può essere modificato. –

+0

È un processo batch che viene eseguito automaticamente in background. Dovrò aggiungere un passaggio di patch al batch che trova e corregge le istruzioni di inserimento interessate in una grande quantità di script. Si noti che la singola istruzione di inserimento del mio OP era solo un esempio. Di questo è possibile, ma è anche possibile utilizzare un RDBM diverso anziché MS SQL Server, un sistema operativo diverso o nessun SQL a tutti - per dirlo un po 'provocatorio. È solo una questione che costa :-) – user2261015

0

Un'istruzione dateformat è tutto è introiti. Una volta che il SET DATEFORMAT è a posto, non ho nemmeno bisogno di usare il CAST AS.

Inoltre, il formato della data dipende da dove ti trovi nel mondo. Essendo in Danimarca, il mio è nel formato GG-MM-AAAA e orologio di 24 ore, quindi l'istruzione dataformat sarebbe DMY anziché YMD. Se la sequenza è sbagliata, probabilmente otterrai un errore sul valore che eccede il valore consentito. L'ho fatto. :)

Ecco un esempio di codice che ha lavorato per me in questo momento utilizzando il proprio editor di SQL di Microsoft:

SET DATEFORMAT DMY 
INSERT INTO mytable ([id],[page],[saved]) VALUES ('2','29','16-01-2017 13:53:22') 

codifica Felice, compagno.