Datum Funktionen schneiden Sie in DB2-timestamp
Gibt es eine Möglichkeit, schneiden Sie den Zeitstempel in eine DB2-date-Funktion?
DB2 select-Anweisung, wo ich'mm Auswahl eines Datums bilden die databease und speichern es in eine variable. Dann verwende ich die variable als parameter für eine andere db2-wählen Sie durch hinzufügen 30 Tage, um es, aber ich glaube nicht, dass es stimmt mit dem Zeitstempel, es ist das hinzufügen am Ende.
Select business_date From DB2INST1.BusDate Where key = 0
Gibt es keinen timestamp in der Datenbank für dieses Datum, aber seine hinzufügen '12:00:00' zum Ende
speichert es diese Auswahl in eine variable und verwende ich es in einem anderen wählen Sie hier
where expirdate > (DATE(@BusDate) + 30 DAYS)
Bekomme ich diesen Fehler:
{"ERROR [428F5] [IBM][DB2/AIX64] SQL0245N Der Aufruf der routine \"DATUM\" ist mehrdeutig. Das argument in position \"1\" nicht ein am besten passen."} System.Exception {IBM.Daten.DB2.DB2Exception}
- Das klingt wie eine potenzielle Anwendung-layer-Problem. Was andere Sprachen/frameworks verwenden Sie für den Zugriff auf SQL? Was ist der Typ der die host-variable? Sie zumindest scheinen die richtige Zeit, aber was ist mit 'formatieren'?
- Die Anwendung ist in Visual Studio 2008 mit .NET 2.0-Framework DB2 Version 9.7
- Ist die erste SELECT-Anweisung und die zweite SELECT-Anweisung ist Teil der gleichen gespeicherten Prozedur? Speichern Sie das resultierende Datum in jedem .Netto-variable?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wählen Sie business-Datum als varchar/string
dann tun Sie dies, um es später zu verwenden, konvertieren Sie es in ein Datum, dann verwenden Sie ein Datums-Funktion zum hinzufügen 30 Tage, um es:
Versuchen
@BusDate
ist alles, was aber ein Datum/timestamp-Typ, der scheitert. Die Verwendung vonDATE()
bedeutet, dass die host-variable ist nicht wirklich ein 'Datum' - Typ - und Sie wollen, stellen Sie sicher, konvertieren Sie es zuerst sowieso, um zu vermeiden, Dinge wie Unklarheiten rund um die Zeitumstellung.Ist die erste SELECT-Anweisung und die zweite SELECT-Anweisung ist Teil der gleichen gespeicherten Prozedur? Speichern Sie das resultierende Datum in jedem .Netto-variable? Wenn Sie speichern es in einem .Net DateTime-variable, mein Vorschlag ist das
date addition
in Betrieb .Net-code selbst. Und dann entfernen Sie den Teil der Zeit aus der variable vor der übergabe an die Datenbank.Werfen Sie einen Blick auf diese zu: Datetime-Feld-überlauf mit IBM Data Server Client v9.7fp5
Wenn beide SELECT-Anweisungen waren Teil einer gespeicherten Prozedur, und es gibt keine .Net DateTime-variable invloved, dann ist es eine andere Geschichte.