Jump to content

SQL Abfrage CAST?


Recommended Posts

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

 

Link to comment

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. 

Link to comment

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.

Link to comment
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

Link to comment

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';

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...