Ich habe ein Problem beim Vergleichen eines Datums in einer Access-Datenbank. Im Grunde analysiere ich ein Datum aus einem Textfeld und versuche dann, dieses Datum mit einem anderen zu vergleichen, um nur neuere/ältere Datensätze zu ziehen.Vergleichen von Datumswerten in Access - Datentypkonflikt in Kriterien Ausdruck
Bisher habe ich alles funktioniert, aber wenn ich versuche, der where-Klausel den Ausdruck hinzuzufügen, verhält es sich so, als wäre es kein Datumswert.
hier ist die volle SQL:
SELECT
Switch(Isdate(TRIM(LEFT(bc_testingtickets.notes, Instr(bc_testingtickets.notes, ' ')))) = false, 'NOT ASSIGNED!!!') AS [Assigned Status],
TRIM(LEFT(bc_testingtickets.notes, Instr(bc_testingtickets.notes, ' '))) AS [Last Updated Date],
bc_testingtickets.notes AS [Work Diary],
bc_testingtickets.ticket_id,
clients.client_code,
bc_profilemain.SYSTEM,
list_picklists.TEXT,
list_picklists_1.TEXT,
list_picklists_2.TEXT,
list_picklists_3.TEXT,
bc_testingtickets.createdate,
bc_testingtickets.completedate,
Datevalue(TRIM(LEFT([bc_TestingTickets].[notes], Instr([bc_TestingTickets].[notes], ' ')))) AS datetest
FROM list_picklists AS list_picklists_3
RIGHT JOIN (list_picklists AS list_picklists_2
RIGHT JOIN (list_picklists AS list_picklists_1
RIGHT JOIN (bc_profilemain
RIGHT JOIN (((bc_testingtickets
LEFT JOIN clients
ON
bc_testingtickets.broker = clients.client_id)
LEFT JOIN list_picklists
ON
bc_testingtickets.status = list_picklists.id)
LEFT JOIN bc_profile2ticketmapping
ON bc_testingtickets.ticket_id =
bc_profile2ticketmapping.ticket_id)
ON bc_profilemain.id =
bc_profile2ticketmapping.profile_id)
ON list_picklists_1.id = bc_testingtickets.purpose)
ON list_picklists_2.id = bc_profilemain.destination)
ON list_picklists_3.id = bc_profilemain.security_type
WHERE (((list_picklists.TEXT) <> 'Passed'
AND (list_picklists.TEXT) <> 'Failed'
AND (list_picklists.TEXT) <> 'Rejected')
AND ((bc_testingtickets.ticket_id) <> 4386))
GROUP BY bc_testingtickets.notes,
bc_testingtickets.ticket_id,
clients.client_code,
bc_profilemain.SYSTEM,
list_picklists.TEXT,
list_picklists_1.TEXT,
list_picklists_2.TEXT,
list_picklists_3.TEXT,
bc_testingtickets.createdate,
bc_testingtickets.completedate,
DateValue(TRIM(LEFT([bc_TestingTickets].[notes], Instr([bc_TestingTickets].[notes], ' '))))
ORDER BY Datevalue(TRIM(LEFT([bc_TestingTickets].[notes], Instr([bc_TestingTickets].[notes], ' '))));
der Wert i vor einem verschiedenen Zeitpunkt dies zu vergleichen bin versucht:
DateValue(Trim(Left([bc_TestingTickets].[notes],InStr([bc_TestingTickets].[notes],' '))))
wenn ich einen Abschnitt der where-Klausel hinzufügen, wie unten, Ich bekomme den Datentyp Mismatch-Fehler:
WHERE DateValue(Trim(Left([bc_TestingTickets].[notes],InStr([bc_TestingTickets].[notes],' ')))) > #4/1/2012#
Ich habe sogar versucht, mit der DateValue-Funktion um das Handbuch d aß teste ich mit, aber ich immer noch den Mismatch Fehler:
WHERE DateValue(Trim(Left([bc_TestingTickets].[notes],InStr([bc_TestingTickets].[notes],' ')))) > DateValue("4/1/2012")
irgendwelche Tipps, wie ich ein Datum in diesem Verfahren vergleichen? Ich kann keine Felder in der Datenbank ändern, ect, deshalb analysiere ich das Datum in SQL und versuche, es zu manipulieren, also kann ich Berichte gegen es laufen lassen.
Ich habe versucht zu googeln, aber nichts spricht speziell über das Parsen eines Datums aus dem Text und das Konvertieren in ein Datumsobjekt. Ich denke, es könnte ein Fehler sein oder die Art, wie das Datum von der linken/Trim-Funktionen zurückgegeben wird. Sie können sehen, ich habe eine Spalte an das Ende der SELECT-Anweisung namens DateTest hinzugefügt und es ist offensichtlicher Zugriff behandelt es wie ein Datum (wenn die Abfrage ausgeführt wird, fragt es nach ältesten nach neuesten/neuesten zu ältesten statt AZ zu sortieren oder ZA), anders als die zweite Spalte in der Auswahl.
Vielen Dank im Voraus für alle Tipps/Hinweise, wie ich auf der Grundlage des Datums abfragen kann.
edit: Ich hat versucht, nur die folgenden Anweisungen in meiner where-Klausel und eine Nichtübereinstimmung noch immer:
CDate(Trim(Left([bc_TestingTickets].[notes],InStr([bc_TestingTickets].[notes],' ')))) > #4/1/2012#
CDate(Trim(Left([bc_TestingTickets].[notes],InStr([bc_TestingTickets].[notes],' ')))) >
CDate("4/1/2012") CDate(DateValue(Trim(Left([bc_TestingTickets].[notes],InStr([bc_TestingTickets].[notes],' '))))) > #4/1/2012#
i mit allen verschiedenen Kombinationen habe ich versucht, die in Bezug auf Putting CDate innerhalb von DatWert denken kann, draußen, ect. Die CDate-Funktion sieht jedoch so aus, als ob ich sie verwenden sollte. nicht sicher, warum es immer noch den Fehler wirft.
Hier ist ein Link zu einem Screenshot mit den Ergebnissen der Abfrage http://ramonecung.com/access.jpg. Es gibt zwei Screenshots in einem Bild.
Ist das http://stackoverflow.com/questions/9901972/how-can-i-sort-by-date-in-ms-access-2007/9904722#9904722 jede Hilfe? – Fionnuala