2013-09-03 9 views
41

Innumerevoli volte durante il giorno in cui copio e incollo record da SQL Server Management Studio ad Excel.I campi DateTime da SQL Server vengono visualizzati in modo errato in Excel

mio problema è che un DateTime valore tale da 8/23/2013 4:51:02 PM non visualizza correttamente come mostrato nell'immagine sottostante anche se mostra correttamente nella casella funzione.

enter image description here

Cambiare il tipo di dati per ShortDate consente di risolvere i problemi di visualizzazione, ma è noioso da fare dal momento che ho un sacco di campi della data in formato. Poiché Excel e SQL Server sono entrambi prodotti Microsoft, ci si aspetterebbe che Excel sia in grado di mostrare correttamente il campo della data.

MODIFICA: questo sembra essere un problema di visualizzazione con Excel. Ho copiato i miei risultati di Management Studio in Blocco note e da lì in Excel e ho ancora lo stesso problema. La copia 2013-08-23 16:52:11.493 da Blocco note a Excel visualizza 52:11.5 (visualizzazione di minuti, secondi e millisecondi arrotondati). La versione di Excel è il 2010.

Qualche idea per semplificare questo?

+0

Eventuali duplicati di http://stackoverflow.com/questions/18396706/in-excel-sheet-cell-not-showing-the-content-properly – pnuts

+0

@Tip_Top Non ero in cerca di saltare attraverso un un sacco di cerchi, solo un modo semplice per copiare e incollare la data da un ambiente all'altro. – Andre

risposta

9

Ho avuto lo stesso problema di Andre. Non sembra essere una soluzione diretta, ma un CAST nella query che genera i dati risolve il problema finché si può vivere entro le restrizioni di SMALLDATETIME. Nella seguente query, la prima colonna non viene formattata correttamente in Excel, mentre la seconda lo fa.

SELEZIONE GETDATE(), CAST (GETDATE() AS SMALLDATETIME)

Forse la parte frazionaria dei secondi in DATETIME e DATETIME2 confonde Excel.

+0

Grazie per avermi indicato nella giusta direzione - sono stato in grado di confermarlo - la parte frazionaria di un secondo in effetti confonde Excel. Excel è stato in grado di incollare data/ora nel formato "aaaa-MM-gg HH: mm: ss" correttamente. – Omaer

0

Provare quanto segue: Incolla "2004-06-01 00: 00: 00.000" in Excel.

Ora provare incollare "2004-06-01 00:00:00" in Excel.

Excel non sembra essere in grado di gestire millisecondi quando si incolla ...

+0

Benvenuti in SO! Si prega di provare a spiegare cosa dovrebbe essere osservato. Il comportamento di Excel potrebbe cambiare nelle versioni future e la tua risposta sarebbe molto fuorviante allora. – Palec

62

Ho anche avuto un problema con questo problema semplicemente copiare e incollare i campi DATETIME da SQL Management Studio per Excel per la manipolazione. Excel ha il valore corretto del DATETIME (anche se la formattazione viene applicata dopo l'incolla), ma per impostazione predefinita non ha un formato incorporato per mostrare SQL DATETIME. Ecco la soluzione:

Fare clic con il tasto destro del mouse sulla cella e scegliere Formato celle. Scegli Personalizzato. Nel Tipo: campo di inserimento entrare

yyyy-mm-dd hh:mm:ss.000 

Riferimento: http://office.microsoft.com/en-us/excel-help/create-a-custom-number-format-HP010342372.aspx

2

Anche se non è una risposta completa alla tua domanda, ci sono tasti di scelta rapida in Excel per modificare la formattazione della cella selezionata (s) a Data o Ora (purtroppo, non ne ho trovato uno per Data + Ora).

Quindi, se siete solo in cerca di date, è possibile eseguire le seguenti operazioni: gamma

  1. copia da SQL Server Management Studio
  2. Incolla in Excel
  3. Selezionare l'intervallo di celle che si bisogno formattato come Date
  4. Press Ctrl + Shift + 3

Per la formattazione come orari, utilizzare Ctrl + Shift + 2.

È possibile utilizzare questo in SQL Server

selezionare Converti (nvarchar (19), ColumnName, 121) AS [Modificato On] FROM Tabella

+0

Non funziona nel mio Excel 2013. – slartidan

0

Ho avuto questo stesso problema per un po ' Generare un numero ragionevole di report ad hoc da SQL Server e copiarli/incollarli in Excel. Vorrei anche dare il benvenuto a una soluzione adeguata, ma la mia soluzione temporanea era creare una macro predefinita in Excel che converta le celle evidenziate nel formato datetime di Excel e assegnarlo a un tasto di scelta rapida (Shift-Ctrl-D nel mio caso). Così apro Excel, copia/incolla da SSMS in un nuovo foglio di lavoro Excel, evidenzia la colonna da convertire e premi Maiusc + Ctrl-D. Lavoro fatto.

+2

Se vuoi mettere questo come risposta, potresti includere il codice della tua macro? Ciò renderebbe questa risposta molto più utile per gli altri utenti. –

1

Ecco un trucco che potrebbe essere utile ... mette un apostrofo di fronte al valore temporale, quindi quando si fa clic destro sull'output in SSMS e si dice "Copia con intestazioni", quindi incollare in Excel, conserva i millisecondi/nanosecondi per i valori datetime2. È un po 'brutto che mette lì l'apostrofo, ma è meglio della frustrazione di dover gestire Excel con arrotondamenti indesiderati sul valore temporale. La data è un formato del Regno Unito ma puoi guardare la pagina della funzione CONVERT in MSDN.

SELEZIONA CONVERT (VARCHAR (23), sm.MilestoneDate, 103) AS MilestoneDate, '' '' + CONVERT (VARCHAR (23), sm.MilestoneDate, 114) AS MilestoneTime da SM SomeTable

1

trovato una soluzione che pretende molto richiede da ricordare e digitare nuovamente il formato datetime personalizzato yyyy-mm-dd hh:mm:ss.000

  • su una nuova cella, scrivere o =NOW() oa qualsiasi data + tempo valido come 5/30/2017 17:35: sarà visualizzato correttamente nella tua lingua, ad esempio, 5/30/2017 5:35:00 PM
  • selezionare la cella, fare clic sul pittore icona Format (il pennello)
  • Ora cliccate sul titolo della riga della colonna che si desidera applicare il formato.

Questo copierà un formato datetime appropriato per l'intera colonna, rendendolo visualizzato correttamente.

0

So che è troppo tardi per rispondere a questa domanda. Ma, ho pensato che sarebbe stato bello condividere come ho risolto questo problema quando ho avuto lo stesso problema. Ecco cosa ho fatto.

  • Prima di copiare i dati, selezionare la colonna in Excel e selezionare 'Formato celle' e scegliere 'Testo' e cliccare su 'OK' (Così, se i dati di SQL ha la terza colonna come DateTime, quindi applicare questa formattazione alla 3a colonna in Excel) Step 1
  • Ora, copia e incolla i dati da SQL a Excel e il valore datetime nel formato corretto. Step 2
Problemi correlati