2016-12-20 1 views
0

Das Datum als Zeichenfolge in der Datenbank gespeichert. Ich kann nicht zwischen zwei Terminen wählen oder „ORDER BY DATE_FIELD DESC“Asp classic, Wie wähle ich ein String-Datum aus, das als String im Datenbank-Textfeld gespeichert wird?

sql="SELECT * FROM payments where p_dat Between #"&from_d&"# AND #"&to_d&"# ORDER BY p_dat DESC" 

machen aber die p_dat ist ein Textfeld nicht Datum/Uhrzeit in der Datenbank.

Ich möchte das tun, ohne das Datumsfeld zu Datum/Uhrzeit zu ändern. Danke

+0

Konvertieren Sie die Zeichenfolge zuerst in eine in einer Unterabfrage und führen Sie dann den Vergleich durch. Welche Datenbank verwendest du? – Lankymart

+0

bitte würden Sie erklären, wie das geht. Verwenden von Zugriff db. danke – Massry

+0

Mögliches Duplikat von [Zeichenfolge in Datum in MS Access Query konvertieren] (http://stackoverflow.com/questions/17361338/convert-string-to-date-in-ms-access-query) – Lankymart

Antwort

2

Access-Datenbank SQL hat CDate() Funktion zu Verfügung.

sql="SELECT * FROM payments where Cdate(p_dat) Between #" & from_d & "# AND #" & to_d & "# ORDER BY Cdate(p_dat) DESC" 

Ich habe dies in einer Office 2007-Datenbank getestet.

+0

schön gemacht, genau das, was ich in meiner Antwort oben meinte – tamak

+0

Es hängt ganz davon ab, wie das Datum * string * strukturiert ist und ob 'CDate()' es in ein reales Datum umwandeln kann. – Lankymart

+0

Das ist, was ich suche. vielen vielen Dank. Du bist ein Prinz. – Massry

0

Sie können die Textfeldwerte der Datenbanken in CDate() in der SQL Select-Anweisung umbrechen, um sie in Vergleichsdaten zu konvertieren.

see a similar answer here

+0

Das OP fragt als Datum in der Abfrage zu vergleichen, wenn die Daten als Zeichenfolge in der Datenbank gespeichert werden, konvertieren Sie keine Zeichenfolge in ein Datum in Classic ASP/VBScript. – Lankymart

+0

Was in der Datenbank gespeichert ist, ist KEIN Date/Time-Objekt ... mit CDATE() wird es in ein Date/Time-Objekt konvertiert und damit für den Datumsvergleich verfügbar gemacht. Wie die folgende Antwort angibt, können Sie CDate() in SQL-Anweisung/-Abfrage der Access-Datenbank verwenden. – tamak

+0

Ich habe es nicht gesagt, was ich gesagt habe, war * "wenn die Daten als String gespeichert sind" *. Dies war alles bevor das OP bestätigte, dass sie [tag: ms-access] trotzdem verwendeten. Mein Kommentar richtete sich an die [verknüpfte Antwort] (http://stackoverflow.com/questions/8710309/how-to-convert-string-to-datetime-format-classic-asp). – Lankymart