IMPORT daty |
IMPORT daty |
10.12.2003, 16:07:39
Post
#1
|
|
Grupa: Zarejestrowani Postów: 141 Pomógł: 0 Dołączył: 24.07.2003 Ostrzeżenie: (10%) |
mam date w nastepujacym formacie ddmmrr
czyli mam wpisy typu 021103 - 2 listopada 2003. importuje to jako TEXT ( jesli zaimportuje jako INT to utnie mi wszystkie daty zaczynajace sie na "0" ). W MySQL'u jest pole DATE od '1000-01-01' do '9999-12-31' wiec zupelnie nie pasuje do formatu, ktory ja mam. Czy ktos moze mi poradzic jak wyjsc z tej sytuacji ? :? |
|
|
10.12.2003, 16:36:08
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 640 Pomógł: 28 Dołączył: 13.02.2003 Skąd: Międzyrzecz/Poznań Ostrzeżenie: (0%) |
mozesz je trzymac w bazie w polu DATE lub DATETIME, a przy wyciaganiu z bazy przeksztalcic na wlasny wzor:[php:1:9dd8382de1]<?php
$czas = strtotime($data_baza]); //data wyciagnieta z bazy $data = date("d.m.Y, H:i:s", $czas); //przeksztalcanie daty na dowolny format ?>[/php:1:9dd8382de1] Zreszta jakbys poszukal na forum to znajdziesz!! Nastepny raz najpierw poszukaj! -------------------- PHP Developer
"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola |
|
|
10.12.2003, 21:41:28
Post
#3
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 10.12.2003 Ostrzeżenie: (0%) |
Jezeli chcesz to wprowadzic do bazy to przeciez nie ma problemu mozesz dodac "20" do stringa, mozesz takze dowolnie wprowadzac dane do bazy i przerabiac na pole DATE w ORACLU jest to funkcja TO_DATE, nie wiem niestety jaka funkcja odpowiada temu w mysql'u
Jezeli chcesz natomiast wyciagac dane w dowolnym formacie to np w ORACLU sluzy do tego funkcja TO_CHAR, w mysql'u odpowiednikiem tej funkcji jest chyba DATE_FORMAT Jezeli chcesz natomiast dowolnie modyfikowac daty masz interwaly czasowe (INTERVAL) wszystko jest opisane w: http://www.mysql.com/doc/en/Date_and_time_..._functions.html Milej lektury |
|
|
11.12.2003, 08:32:11
Post
#4
|
|
Grupa: Zarejestrowani Postów: 141 Pomógł: 0 Dołączył: 24.07.2003 Ostrzeżenie: (10%) |
najbardziej by mnie interesowalo gdyby udalo sie kazdy wiersz w kolumnie DATA zapisac od tylu. Obecnie jest ddmmrr a gdyby usalo sie zapisac te dane od tylu rrmmdd to by rozwiazalo moj problem.
|
|
|
11.12.2003, 08:46:11
Post
#5
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław |
[php:1:5415b6c598]<?php
$strOld = '11122003'; // 11 listopad 2003 $strNew = substr( $strOld, 4, 4 ).substr( $strOld, 2, 2 ).substr( $strOld, 0, 2 ); ?>[/php:1:5415b6c598] -------------------- |
|
|
11.12.2003, 09:13:03
Post
#6
|
|
Grupa: Zarejestrowani Postów: 141 Pomógł: 0 Dołączył: 24.07.2003 Ostrzeżenie: (10%) |
zapomnialem dodac, ze musze zrobic to na poziomie bazy danej. Moze istnieje jakas funkcja " reverse() " albo cos podobnego? moze przy imporcie danych da sie to ustawic ?
|
|
|
11.12.2003, 10:45:18
Post
#7
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław |
Ja bym dopisał do mojej propozycji kilka linijek i zrołbym sobie skrypcik konwertujący właśnie podczas importu.
Nie widzę powodu, dla którego musiałoby to być zrobione na poziomie samej bazy. No ale jeśłi już się upierasz:[sql:1:ba415e7bbd]ALTER TABLE tabela ADD nowePole TEXT NOT NULL[/sql:1:ba415e7bbd][sql:1:ba415e7bbd]UPDATE tabela SET nowePole = CONCAT('', SUBSTRING(starePole, 5, 4), SUBSTRING(starePole, 3, 2), SUBSTRING(starePole, 1, 2) )[/sql:1:ba415e7bbd][sql:1:ba415e7bbd]ALTER TABLE tabela DROP starePole[/sql:1:ba415e7bbd][sql:1:ba415e7bbd]ALTER TABLE tabela CHANGE nowePole starePole TEXT NOT NULL[/sql:1:ba415e7bbd] -------------------- |
|
|
11.12.2003, 11:09:10
Post
#8
|
|
Grupa: Zarejestrowani Postów: 141 Pomógł: 0 Dołączył: 24.07.2003 Ostrzeżenie: (10%) |
ok zaraz to wyprobuje a poki co udalo mi sie to zalatwic tym:
[sql:1:dd040d76da] update test1 set data = date_format(data, '%d%m%y'); [/sql:1:dd040d76da] Szczerze mowiac nie wiem czemu ale to zadzialalo, ale zmienilo format ddmmyy na yyddmm. Sprawdzam to jeszce wyrywkowo ale wyglada jak narazie ok. |
|
|
11.12.2003, 11:23:29
Post
#9
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław |
haha... no tak, pokomplikowąłem trochę. Ale myślałem i czymś innym po drodze, gdzie też trzeba pozamieniać kolejnosc znaków w stringu i to dlatego.
A tu mam finalną wskazówkę dla Ciebie: http://www.mysql.com/doc/en/Date_and_time_..._functions.html Cytat %Y Year, numeric, 4 digits
%y Year, numeric, 2 digits -------------------- |
|
|
11.12.2003, 18:59:47
Post
#10
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 10.12.2003 Ostrzeżenie: (0%) |
Cytat A tu mam finalną wskazówkę dla Ciebie:
http://www.mysql.com/doc/en/Date_and_time_..._functions.html Zanim cos napiszesz to poczytaj posty wyzej. Cytat <?php
$strOld = '11122003'; // 11 listopad 2003 $strNew = substr( $strOld, 4, 4 ).substr( $strOld, 2, 2 ).substr( $strOld, 0, 2 ); ?> Skoro to forum o Bazach danych to on chyba chce to zrobic na poziomie bazy Pozatym w kazdej poważnej ksiazce do baz danych jest napisane ze jezeli cos mozna zrobic na poziomie bazy to nalezy to wlasnie tam robic i unikac powielania tych samych mechanizmow we wlasnej aplikacji. |
|
|
11.12.2003, 19:58:03
Post
#11
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław |
1. Skoro człowiek importuje dane do bazy, to może dokonac konwersji w trakcie importu, prawda?
2. Czasem, siedząć w pracy, klikam na "odpowiedz", zaczynam pisac, po czym przychodzi ktoś w sprawie służbowej. Więc bądź taki dobry i nie czepiaj się przesunięcia czasowego, ok? EOT. -------------------- |
|
|
Wersja Lo-Fi | Aktualny czas: 8.05.2024 - 05:34 |