2015-04-21 10 views
5

tak im mają dość dziwny problem, mam kolumna (powiedzmy kolumna A) w programie Excel, który posiada dane, które wygląda tak:SQL DATETIME Wstaw z Excela?

4/11/2015 10:14

Mam pęczek z innych kolumn, ale tak czy inaczej w moim SQL INSERT w programie Excel dane (podczas kopiowania out) wygląda następująco: 42105,4561921296

= "INSERT INTO wartości z tabeli ('" & A1 &' ", itp .. ..) "ma format danych" ogólny ", a kolumna Data ma format" Niestandardowy ", w którym istnieje typ M/DD/RRRR MM/HH.

Kolumna SQL ma typ danych DATETIME, więc oczywiście nie przyjmuje tego dziwnego numeru, który otrzymuje.

Wszelkie pomysły? zmiana formatu kolumny "SQL INSERT" nie zmienia wyników.

+0

Najpierw spróbuj ustawić oba formaty danych na tekst i sprawdź, czy SQL wykona niejawną konwersję datetime. –

+2

Niestety ustawienie faktycznej kolumny daty/czasu na tekst daje wspomnianą wyżej brzydką liczbę. Ale mimo to próbowałem bez powodzenia:/ –

+0

Potrzebujesz czegoś podobnego do '' '' '' '. – pnuts

Odpowiedz

7

masz rację - formaty Excel zmienia się tylko sposób liczby są wyświetlany, a nie wartością bazową komórki. W tym przypadku wartość komórki jest wartością excel-date-time, która jest liczbą dni od 1/1/1900, z miejscami dziesiętnymi dla czasu.

polecam korzystania TEXT funkcji programu Excel do konwersji numeryczną wartość daty i godziny programu Excel do łańcucha tekstowego, który można włożyć do SQL:

Zamiast:

INSERT INTO TABLE VALUES ('"&A1&"', Etc....)" 

Spróbuj:

INSERT INTO TABLE VALUES ('"&TEXT(A1,"YYYY-MM-DD HH:MM")&"', Etc...)" 
+0

Pamiętaj, że kody w drugim argumencie funkcji tekstowej (wewnątrz podwójnych kodów) są powiązane z ustawieniami regionalnymi systemu twojego komputera. jeśli powyższy kontekst nie działa, sprawdź format numeru odpowiedniej komórki dla Twojego wariantu – robotik

4

Najlepszy format wstawić datę czasu do kolumny datetime jest przedstawienie datę i godzinę jako YYYY-MM-DD minuta: sekunda lub 2015-04-15 12:52

tak aby wstawić datetime z programu Excel można użyć tego zestawu funkcji Excel: (gdzie A1 zawiera datetime zostać zapisany)

=YEAR(A1)&"-"&RIGHT("00"&MONTH(A1),2)&"-"&RIGHT("00"&DAY(A1),2)&" "&RIGHT("00"&HOUR(A1),2)&":"&RIGHT("00"&MINUTE(A1),2)&":"&RIGHT("00"&SECOND(A1),2) 
+0

tęskniłeś za godziną, a wartości jednocyfrowe powinny zawierać początkowe zera. Modyfikuję odpowiedź odpowiednio: – robotik

+0

utwórz tabelę # x1 (d1 datetime) wstaw do wartości # x1 ('2015-04-15 12:52') wybierz * z # x1 zwraca to: 2015-04-15 12: 52: 00.000 –

+0

to godziny i minuty z pominiętymi sekundami, a nie minutami i sekundami z pominiętą godziną. – robotik