Begrenzte Listendarstellung

Fragen und Probleme rund um die Abfragespache SQL.
castorp
Erfahrener Benutzer
Beiträge: 1177
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: Begrenzte Listendarstellung

Beitrag von castorp » Mi 10. Okt 2018, 12:30

Ich wollte es nur erwähnen, weil ich immer wieder Leute treffe, die denken das der JOIN Operator was "ganz neues" wäre.
Einige verbreitete Datenbanksysteme haben das auch sehr lange nicht unterstützt (Oracle, SQL Server). Und in der Oracle Community gibt es noch einige Benutzer die sich immer noch weigern das zu verwenden weil es ganz am Anfang als Oracle das vor rund 15 Jahren eingeführt hat ein paar Bugs mit der Syntax gab.

Leider muss ich auch Postgres einen kleinen Vorwurf machen, weil in der Dokumentation praktisch alle Beispiele implizite joins verwenden und nicht den expliziten JOIN Operator.

Die impliziten joins haben das Problem, dass sie leicht in einem ungewollten cross join resultieren weil es kein Syntaxfehler ist die join Bedingung zu vergessen. Deswegen empfehle ich immer wo es nur geht, den "modernen" JOIN Operator zu verwenden.
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

akretschmer
Erfahrener Benutzer
Beiträge: 7683
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Begrenzte Listendarstellung

Beitrag von akretschmer » Mi 10. Okt 2018, 12:32

FULL ack! (letzter Absatz)
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

simar
Benutzer
Beiträge: 68
Registriert: Di 9. Okt 2018, 17:40

Re: Begrenzte Listendarstellung

Beitrag von simar » Mi 10. Okt 2018, 14:36

Fri Oct 05 2018 19:52:14 GMT+0200 (CEST) <<< ist das Format von date_time in meiner Tabelle
Frage: ist es möglich dieses Format zu wandeln damit ich mit TT.MM.JJJJ alles vom 05.10.2018 auslesen kann, oder geht das nur mit der between .. and Bedingung

akretschmer
Erfahrener Benutzer
Beiträge: 7683
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Begrenzte Listendarstellung

Beitrag von akretschmer » Mi 10. Okt 2018, 14:49

*vermutlich* hast da also ein timestamptz drin stehen, select spalte::date liefert dir das reine Datum, where spalte::date='2018-10-05' könntest Du es prüfen, oder via to_char(spalte, 'tt.mm.yyyy') auf Dein Format bringen.

Bitte schaue Dir die passenden Funktionen an:

https://www.postgresql.org/docs/10/stat ... tting.html
https://www.postgresql.org/docs/10/stat ... etime.html
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

castorp
Erfahrener Benutzer
Beiträge: 1177
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: Begrenzte Listendarstellung

Beitrag von castorp » Mi 10. Okt 2018, 15:15

simar hat geschrieben:
Mi 10. Okt 2018, 14:36
ist das Format von date_time in meiner Tabelle
Nein, ist es nicht.

Eine timestam oder timestamptz Spalte hat kein "Format". Das "Format" welches Du siehst wird durch das SQL Tool, welches die Daten anzeigt, bestimmt. In der Datenbank wird ein timestamp Wert ohne Format gespeichert.
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

simar
Benutzer
Beiträge: 68
Registriert: Di 9. Okt 2018, 17:40

Re: Begrenzte Listendarstellung

Beitrag von simar » Mi 10. Okt 2018, 16:23

OK, kein Format, hab ich mich falsch ausgedrückt. Aber dann sollte ich doch geziehlt auf "Oct 05 2018 " mit einem Select zugreifen können?

castorp
Erfahrener Benutzer
Beiträge: 1177
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: Begrenzte Listendarstellung

Beitrag von castorp » Mi 10. Okt 2018, 16:46

Ja natürlich:

Code: Alles auswählen

where date_time::date = date '2018-10-05'
Das date_time::date "verwandelt" den Timestamp (Datum und Uhrzeit) in ein "Datum" (ohne Uhrzeit) um.
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

simar
Benutzer
Beiträge: 68
Registriert: Di 9. Okt 2018, 17:40

Re: Begrenzte Listendarstellung

Beitrag von simar » Mi 10. Okt 2018, 18:00

ERROR: FEHLER: ungültige Eingabesyntax für Typ date: »Tue Mar 06 2018 23:01:10 GMT+0100 (CET)« SQL-Status: 22007

ich glaube der erkennt das >>> '2018-10-05' nicht, sieht farblich aus wie auskommentiert

castorp
Erfahrener Benutzer
Beiträge: 1177
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: Begrenzte Listendarstellung

Beitrag von castorp » Mi 10. Okt 2018, 18:02

Das "date '2018-10-05'" ist korrekt, aber offensichtlich der cast zu einem DATE Wert nicht

Das bedeutet, dass Deine date_time Spalte kein timestamp ist, sondern ein text oder varchar - sehr, sehr schlechte Idee.
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

akretschmer
Erfahrener Benutzer
Beiträge: 7683
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Begrenzte Listendarstellung

Beitrag von akretschmer » Mi 10. Okt 2018, 18:05

simar hat geschrieben:
Mi 10. Okt 2018, 18:00
ERROR: FEHLER: ungültige Eingabesyntax für Typ date: »Tue Mar 06 2018 23:01:10 GMT+0100 (CET)« SQL-Status: 22007

ich glaube der erkennt das >>> '2018-10-05' nicht, sieht farblich aus wie auskommentiert
um die These von @castorp zu bestätigen: zeige uns bitte die Ausgabe von \d+ <table> aus psql heraus.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Antworten