Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   SQLite Datenbank Datumsformat ändern (https://www.delphipraxis.net/157273-sqlite-datenbank-datumsformat-aendern.html)

fillibuster 6. Jan 2011 08:59

Datenbank: SQLite • Version: 3.x • Zugriff über: Unidac

SQLite Datenbank Datumsformat ändern
 
Hallo,

ich möchte das Format der Geburtstage in einer SQLite Datenbank ändern. Die Daten sollen dabei erhalten bleiben. Format derzeit ist 17.02.1985 und soll nach 1985-02-17 00:00:00. Habe es so versucht, aber das haut natürlich die Daten raus:
Code:
Update contacts set birthday=strftime('%Y-%m-%d %H:%M:%S',birthday)
:?

Viele Grüße ...

mkinzler 6. Jan 2011 09:11

AW: SQLite Datenbank Datumsformat ändern
 
Ich würde das Format nicht in der Datenbank ändern, sondern die Werte bei der Anzeige entsprechend formatieren.

Ich würde Datumswerte auch nicht als String, sondern als Datetime speichern

fillibuster 6. Jan 2011 09:14

AW: SQLite Datenbank Datumsformat ändern
 
Hi,

darum geht es ja. Erstmal muss ich die vorhandenen Daten umformatieren, bevor ich das Feld als Datetime umwandeln kann. Wer auch immer das damals als String angelegt hat :roll:

Viele Grüße ...

mkinzler 6. Jan 2011 09:31

AW: SQLite Datenbank Datumsformat ändern
 
Warum den das du kannst auch gleich, dass neue Feld Füllen, und zawr ohne Formatierung

fillibuster 6. Jan 2011 09:42

AW: SQLite Datenbank Datumsformat ändern
 
Hi,

also wenn ich über den SQLite Manager eine bestehende Datenbank mit Geburtstagen (im Format 17.02.1985) öffne und das Feld von Varchar(10) auf Datetime ändere sind alles Daten weg. Also muss ich bestehende Daten erst umformatieren.

Viele Grüße ...

mkinzler 6. Jan 2011 09:44

AW: SQLite Datenbank Datumsformat ändern
 
Besser wäre es ein neues Feld einzufügen, per Update Werte von Feld1 auf Feld2 übertrage und dann das ale Feld lösvem/neues umbenennen

fillibuster 6. Jan 2011 10:12

AW: SQLite Datenbank Datumsformat ändern
 
Hi,

das geht natürlich auch, da habe ich aber auch Problem beim übertragen. Habe folgende Querys getestet:
Code:
update contacts set rebirth=strftime('%Y-%m-%d %H:%M:%S',birthday) where birthday !=''
update contacts set rebirth=datetime('%Y-%m-%d %H:%M:%S',birthday) where birthday !=''
Was mache ich falsch?

Viele Grüße ...

DeddyH 6. Jan 2011 10:16

AW: SQLite Datenbank Datumsformat ändern
 
Ich habe von SQLite keine Ahnung, aber geht so etwas?
SQL-Code:
UPDATE
  contacts
SET
  rebirth=CAST(strftime('%Y-%m-%d %H:%M:%S',birthday) AS DateTime)
WHERE
  birthday !=''

mkinzler 6. Jan 2011 10:19

AW: SQLite Datenbank Datumsformat ändern
 
Du must das Istformat angeben und nicht das Zielformat.

fillibuster 6. Jan 2011 10:55

AW: SQLite Datenbank Datumsformat ändern
 
Mmmh funktioniert leider alles nicht :?

DeddyH 6. Jan 2011 11:00

AW: SQLite Datenbank Datumsformat ändern
 
http://entwickler-forum.de/showthread.php?t=51954

fillibuster 6. Jan 2011 11:39

AW: SQLite Datenbank Datumsformat ändern
 
Hi,

danke für eure Antworten. Leider stecke ich fest:
Code:
UPDATE contacts SET rebirth = CAST(  SUBSTR(birthday,7,4) || '-' || SUBSTR(birthday,4,2) || '-' || SUBSTR(birthday,1,2) AS DATE);
SQLite schreibt immer ne 1 ins rebirth Feld :?

Viele Grüße ...

mkinzler 6. Jan 2011 11:44

AW: SQLite Datenbank Datumsformat ändern
 
Es scheint ein anderes Datumsformat erwartet zu werden: Versuch mal
SQL-Code:
UPDATE contacts SET rebirth = CAST( birthday AS DATE);
Wie wird das Datum angezeigt:
SQL-Code:
select CAST( birthday AS DATE) from contacs;
?

fillibuster 6. Jan 2011 12:09

AW: SQLite Datenbank Datumsformat ändern
 
Hi,

Code:
select CAST( birthday AS DATE) from contacts;
ergibt 17.02

Viele Grüße ...

DeddyH 6. Jan 2011 12:13

AW: SQLite Datenbank Datumsformat ändern
 
Und was sollte es sein?

fillibuster 6. Jan 2011 12:17

AW: SQLite Datenbank Datumsformat ändern
 
Hi,

also das Jahr sollte schon noch mit. Date bzw. DateTimewerte werden mir in der Übersicht so angezeigt:
Code:
1985-02-17 09:00:00
Viele Grüße

DeddyH 6. Jan 2011 12:24

AW: SQLite Datenbank Datumsformat ändern
 
1. Versuch
SQL-Code:
SELECT
  SUBSTR(birthday,7,4) || '-' || SUBSTR(birthday,4,2) || '-' || SUBSTR(birthday,1,2) AS NewBirthDate
FROM
  contacts
Wenn das stimmig aussieht, dann weiter mit
SQL-Code:
SELECT
  CAST(SUBSTR(birthday,7,4) || '-' || SUBSTR(birthday,4,2) || '-' || SUBSTR(birthday,1,2) AS Date) AS NewBirthDate
FROM
  contacts
Was kommt dabei heraus?

fillibuster 6. Jan 2011 12:30

AW: SQLite Datenbank Datumsformat ändern
 
Hi,

erstes Ergebnis ist ok - wie es sein soll. Beim CAST bekomme ich nur das Jahr!

Viele Grüße ...

DeddyH 6. Jan 2011 12:39

AW: SQLite Datenbank Datumsformat ändern
 
Jetzt bin ich im Augenblick überfragt. Steht denn in der Doku nichts dazu, wie der Datumsstring formatiert sein muss? Oder geht das evtl. einfach so?
SQL-Code:
UPDATE contacts SET rebirth = SUBSTR(birthday,7,4) || '-' || SUBSTR(birthday,4,2) || '-' || SUBSTR(birthday,1,2);

jobo 6. Jan 2011 12:40

AW: SQLite Datenbank Datumsformat ändern
 
Ich glaub, Du kannst einfach mit date() arbeiten. Zuvor musst Du das Textdatum mit substr umbauen in ein Format, das Date() versteht, z.B. YYYY-MM-DD

Beispiel:
Code:
sqlite> create table datest (mydate date);
sqlite> select * from datest
   ...> ;
sqlite> insert into datest values(date());
sqlite> select * from datest;
2011-01-06
sqlite> insert into datest
   ...> select date(
   ...>         substr("18/02/1999",-4,4) || "-" ||
   ...>         (CASE WHEN substr("18/02/1999",-7,1) = '/'
   ...>               THEN "0" || substr("18/02/1999",-6,1)
   ...>               ELSE substr("18/02/1999",-7,2)
   ...>               END) || "-"
   ...>            ||
   ...>         (CASE WHEN substr("18/02/1999",2,1) = '/'
   ...>               THEN "0" || substr("18/02/1999",1,1)
   ...>               ELSE substr("18/02/1999",1,2)
   ...>               END)
   ...>             );
sqlite> select * from datest;
2011-01-06
1999-02-18
sqlite> select min(mydate), max(mydate) from datest;
1999-02-18|2011-01-06
sqlite> select max(mydate)-min(mydate) from datest;
12
sqlite> select julianday(max(mydate))-julianday(min(mydate)) from datest;
4340.0
sqlite>

fillibuster 6. Jan 2011 12:42

AW: SQLite Datenbank Datumsformat ändern
 
@DeddyH:
Ich werd bekloppt. Datt geht:cheer:

user0815 6. Jan 2011 13:04

AW: SQLite Datenbank Datumsformat ändern
 
Habe dazu auch was gefunden:
http://sqlite.awardspace.us/syntax/sqliteindex.htm
der hier:
http://sqlite.awardspace.info/syntax/sqlitepg09.htm

keine Ahnung ob´s hilft.

fillibuster 6. Jan 2011 13:10

AW: SQLite Datenbank Datumsformat ändern
 
Danke euch allen :hello:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz