Jump to content

SQL Abfrage CAST?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich bin noch recht neu im Thema microsoft sql. Trotzdem muss ich damit arbeiten und das macht mir auch richtig Spass.

Vieles habe ich bis jetzt selbst rausgefunden.

Nun habe ich aber ein Problem, bei dem ich nicht weiter komme. Vielleicht finde ich hier die benötigte Hilfe.

Ich mache folgende Datenbankabfrage:

select*
, CASTnderungszeitpunkt AS date) AS Verladung
from Picks_erledigt
where Picks_erledigt.Lagerort = 662
    and Picks_erledigt.Auftragstyp = 'A'
    and Picks_erledigt.Ziel = 1000
    and Picks_erledigt.[Ziel neu] < 1000

 

Das läuft auch ohen Fehler.

Den CAST mache ich, weil ich eine Spalte nach Datum einschränken will, aktuell aber der Typ DateTime verwendet wird.

 

Wenn ich nun noch die folgende Zeile ans Ende anfüge, um nach Datum einzuschränken,

and Picks_erledigt.Verladung > '2022-07-26'	

bekomme ich den Fehler:

Meldung 207, Ebene 16, Status 1, Zeile 1
Ungültiger Spaltenname "Verladung".

 

Was ist mein Fehler bzw. wie muss der code richtig lauten?

 

Ich freue mich schon auf Eure Untertützung

 

Geschrieben

Hallo Dukel,

 

wie muss das denn aussehen, wenn ich mit DateTime rechnen will? Die Uhrzeit will ich ignorieren und alle Datensätze ab einem bestimmten Datum im Ergebnis erhalten. 
 

Select * mache ich deswegen, weil ich tatsächlich alle Spalten benötige und es ein paar mehr sind. 

Geschrieben

Wenn Du aus einem DateTime nur Date brauchst, musst Du den Wert passend formatieren: https://www.mssqltips.com/sqlservertip/2655/format-sql-server-dates-with-format-function/ Damit kann man dann rechnen.

Ich glaube der Fehler kommt aber daher, weil Du das mit AS ja neu benennst und nicht so aus der Tabelle kommt. Falls ja, dann probier es mal ohne den Tabellennamen.

Select * ist der Faulheit des Entwicklers geschuldet, das fällt dir früher oder später auf die Füße und ist außerdem auch schlechter Stil.

Geschrieben
Am 5.8.2022 um 17:11 schrieb akku:
 

Was ist mein Fehler bzw. wie muss der code richtig lauten?

 

Ich freue mich schon auf Eure Untertützung

 

Dein Fehler ist sehr einfach zu erklären. Im where Teil ist der Alias aus dem Select Teil noch nicht bekannt. Die Ausführungsreihenfolge ist nämlich: 

  1. FROM – inputs are evaluated first
  2. JOIN
  3. WHERE
  4. GROUP BY
  5. HAVING
  6. SELECT
  7. DISTINCT
  8. ORDER BY
  9. TOP – this is the last step

aus T-SQL processing order

Geschrieben

Sowas sollte gehen:

 

SELECT Änderungszeitpunkt FROM Picks_erledigt
WHERE Änderungszeitpunkt between '2022-07-26T00:00:00.000' and '2022-07-26T23:59:59.000';

 

bzw.

 

SELECT Änderungszeitpunkt FROM Picks_erledigt
WHERE Änderungszeitpunkt > '2022-07-26T00:00:00.000';

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...