nach Monat suchen...

Programmierung mit PostgreSQL (C#, PHP, Perl, Java, ...)
Antworten
tomovic
Benutzer
Beiträge: 91
Registriert: Mi 11. Nov 2015, 15:27

nach Monat suchen...

Beitrag von tomovic » Do 5. Mai 2016, 21:11

hallo,
checkbox 9 ist für RE und checkbox10 ist für kv´s. Spalte Datum seiht z.B. so aus 2016.05.02
Mein Ziel ist es jetzt:

Code: Alles auswählen

... AND zeige mir alle Ergnisse mit 05 (Mai) an.
Wie hänge ich das an dem String das an?

Code: Alles auswählen

      string sucher_r = "";
            string sucher_a = "";
            if (checkBox9.Checked)
            {
                sucher_r = " AND artdesaufttrags = 'Rechnung'";
            }
            if (checkBox10.Checked)
            {
                sucher_a = " AND artdesaufttrags = 'Angebot'";
            }

            if (checkBox10.Checked && checkBox9.Checked )
            {
                sucher_a = " AND (artdesaufttrags = 'Angebot' OR artdesaufttrags = 'Rechnung')";
                sucher_r = "";
            }
            try
            {

                string connstring = String.Format("Server={0};Port={1};User Id={2};Password={3};Database={4};",
                  Form1.tbHost, Form1.tbPort, Form1.tbUser, Form1.tbPass, Form1.tbDataBaseName);

                NpgsqlConnection conn = new NpgsqlConnection(connstring);

                conn.Open();

                string sql = "select * from auftrag where (sqlpos BETWEEN ' 1 'AND ' 100')" + sucher_a + sucher_r +";";


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

Re: nach Monat suchen...

Beitrag von akretschmer » Do 5. Mai 2016, 21:33

Keine Ahnung was Du da tust und treibst, aber es gibt Funktionen, um aus einem Datum Dinge zu extrahieren.Vermutlich suchst Du sowas. Verwende halt korrekte Datentypen, das machst Du ja offenbar derzeit nicht.

Dein gezeigter Code hat nix mit SQL zu tun, damit bist Du hier eher falsch.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

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

Re: nach Monat suchen...

Beitrag von castorp » Fr 6. Mai 2016, 00:09

Code: Alles auswählen

select *
from auftrag
where extract(month from bestell_datum) = 5
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: 7426
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: nach Monat suchen...

Beitrag von akretschmer » Fr 6. Mai 2016, 09:22

2 Ergänzungen dazu:
  • das liefert alle Mai-Ereignisse, unabhängig von Jahr. Das kann gewollt sein, kann aber auch ein Fehler sein
  • ein funktionaler Index kann die Performance solcher Abfragen erheblich beschleunigen
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

tomovic
Benutzer
Beiträge: 91
Registriert: Mi 11. Nov 2015, 15:27

Re: nach Monat suchen...

Beitrag von tomovic » Fr 6. Mai 2016, 13:30

akretschmer hat geschrieben:2 Ergänzungen dazu:
  • das liefert alle Mai-Ereignisse, unabhängig von Jahr. Das kann gewollt sein, kann aber auch ein Fehler sein
  • ein funktionaler Index kann die Performance solcher Abfragen erheblich beschleunigen
ZU.1: ja,das war Absicht, ich hätte nach dem Jahr Tag Stunden fragen können, aber dann verstehen mich die Leute nicht. Sie schreiben dann...Keine Ahnung was Du da tust und treibst.... :-)

zu.2 Das kann gut sein, ich gehe erst den einfachen Weg, dann einen besseren.

@castorp
Ich habe aber bestell_datum so erstellt:

bestell_datum VARCHAR(30) NOT NULL,

Jetzt sagst du bestimmt, ich muss das bestell_datum als date erstellen richtig? Sonst weis postgres nicht was month ist ?! Kann ich auch nach der Stelle 4 und 5 suchen? das wäre 05?

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

Re: nach Monat suchen...

Beitrag von akretschmer » Fr 6. Mai 2016, 13:50

Bitte verwende IMMER korrekte Datentypen. Wir sind hier ja nicht bei MySQL. In Strings kannst Du auch nach der 4 und 5 Stelle suchen, das geht z.B. via substring(string [from int] [for int]). Again: nutze korrekte Datentypen
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

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

Re: nach Monat suchen...

Beitrag von castorp » Fr 6. Mai 2016, 15:24

Speichere niemals (wirklich: niemals) ein Datum (oder Zahlen, oder eine Uhrzeit oder Zeit & Uhrzeit) in einer VARCHAR Spalte.
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

tomovic
Benutzer
Beiträge: 91
Registriert: Mi 11. Nov 2015, 15:27

Re: nach Monat suchen...

Beitrag von tomovic » Fr 6. Mai 2016, 15:40

castorp hat geschrieben:Speichere niemals (wirklich: niemals) ein Datum (oder Zahlen, oder eine Uhrzeit oder Zeit & Uhrzeit) in einer VARCHAR Spalte.
ok danke, kein Problem, aber warum?

Ich habe ein bieschen googelt, ich lösche die Tabelle und erstelle Sie neu mit dem unterschied:

Code: Alles auswählen

erstelldatum_blalba     date default current_date NOT NULL,
mit insert muss ich mich nicht mehr die Spalte erstelldatum_blalba kümmern, sowie update.
Beim auslesen der kompletten Zeile habe ich das Datum als ich insert benützt habe.

Stimmt das so?
Wie ändere ich dann das Datum von einem Eintrag von der Tabelle?

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

Re: nach Monat suchen...

Beitrag von akretschmer » Fr 6. Mai 2016, 17:31

via UPDATE. Der Default-Wert ist nur beim Insert relevant, willst Du bei einem Update das auf das aktuelle datum setzten (als default) brauchst Du einen trigger.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Antworten