MSSQL Records zwischen Gestern Mitternacht und Heute Mitternacht
MSSQL 2003
Hallo liebe Admins!
Wieder einmal ich, und wieder einmal ein MSSQL Problem...
Wir wollen eine Table von einem MSSQL System auf ein MySQL System spiegeln. Einmal am Tag.
Nun wollen wir dies via einem in der MSSQL Table vorhandenen Timestamp realisieren.
Alle Records, welche zwischen Gestern 00:00:00 und Heute 00:00:00 in der Tabelle sind, sollen in ein Textfile geschrieben werden, welches dann importiert wird. Das mit dem Textfile ist auch eine Zangengeburt, geht aber mittlerweile. Nur das Selektieren der Records gelingt uns nicht.
Beispiel:
(Pseudo Code)
SELECT *
FROM
db.user.tbl
WHERE
TimeStamp BETWEEN '2008-09-17 00:00:00' and '2008-09-18 00:00:00'
Anders, vielleicht einfacher ausgedrückt:
Wir wollen alle Records eines Tages.
Und zwar vom vergangenen Tag.
Keine Records vom aktuellen Tag.
Und genau dort hängts bei uns... jemand ne Idee?
Besten Dank für Eure Hilfe!
Hallo liebe Admins!
Wieder einmal ich, und wieder einmal ein MSSQL Problem...
Wir wollen eine Table von einem MSSQL System auf ein MySQL System spiegeln. Einmal am Tag.
Nun wollen wir dies via einem in der MSSQL Table vorhandenen Timestamp realisieren.
Alle Records, welche zwischen Gestern 00:00:00 und Heute 00:00:00 in der Tabelle sind, sollen in ein Textfile geschrieben werden, welches dann importiert wird. Das mit dem Textfile ist auch eine Zangengeburt, geht aber mittlerweile. Nur das Selektieren der Records gelingt uns nicht.
Beispiel:
(Pseudo Code)
SELECT *
FROM
db.user.tbl
WHERE
TimeStamp BETWEEN '2008-09-17 00:00:00' and '2008-09-18 00:00:00'
Anders, vielleicht einfacher ausgedrückt:
Wir wollen alle Records eines Tages.
Und zwar vom vergangenen Tag.
Keine Records vom aktuellen Tag.
Und genau dort hängts bei uns... jemand ne Idee?
Besten Dank für Eure Hilfe!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 97282
Url: https://administrator.de/contentid/97282
Ausgedruckt am: 15.11.2024 um 23:11 Uhr
9 Kommentare
Neuester Kommentar
Moin solaris-ch,
ich habe eigentlich im moment nur zwei Probleme.
- ich verstehe Deine Frage/Dein problem nicht wirklich
- und ich spreche kein mySQL
... aber in der Tendenz würder ich es so abfackeln, bis mir etwas ästhetisches einfällt:
---> Date(DeinTimeStamp) sollte die Uhrzeit-Detailangabe aus dem Timestamp entfernen
---> CurDate() liefert nur Datum "heute" ohne Uhrzeit
--> "heute" abzüglich 1 Tach sollte "gestern" ebenfallls im Format ohne Uhrzeit liefern.
Grüße
Biber
ich habe eigentlich im moment nur zwei Probleme.
- ich verstehe Deine Frage/Dein problem nicht wirklich
- und ich spreche kein mySQL
... aber in der Tendenz würder ich es so abfackeln, bis mir etwas ästhetisches einfällt:
SELECT deitab.*
FROM
db.user.tbl deitab
WHERE
Date(deitab,DeinTimeStamp) = Date_ADD(CURDATE(), INTERVAL -1 DAY)
---> Date(DeinTimeStamp) sollte die Uhrzeit-Detailangabe aus dem Timestamp entfernen
---> CurDate() liefert nur Datum "heute" ohne Uhrzeit
--> "heute" abzüglich 1 Tach sollte "gestern" ebenfallls im Format ohne Uhrzeit liefern.
Grüße
Biber
Moin,
du kannst doch, wie in Excel, mit größer als (>) und kleiner als (<) arbeiten, oder?
Dann wäre dein Statement von oben in etwa:
Ich kann dir allerdings so nicht sagen, in welchem Format du den Timestamp ansprechen musst, da ich außer in einer (qualitativ nicht so hochwertigen) Schulung noch kein MSSQL angewendet habe.
Habe nur SQL-Erfahrung aus Firebird-Datenbanken. Und das auch nur aus der Schule aus dem Unterricht.
MfG,
VW
du kannst doch, wie in Excel, mit größer als (>) und kleiner als (<) arbeiten, oder?
Dann wäre dein Statement von oben in etwa:
SELECT *
FROM
db.user.tbl
WHERE
TimeStamp > '2008-09-17 00:00:00' AND TimeStamp < '2008-09-18 00:00:00'
Ich kann dir allerdings so nicht sagen, in welchem Format du den Timestamp ansprechen musst, da ich außer in einer (qualitativ nicht so hochwertigen) Schulung noch kein MSSQL angewendet habe.
Habe nur SQL-Erfahrung aus Firebird-Datenbanken. Und das auch nur aus der Schule aus dem Unterricht.
MfG,
VW
Moin solaris-ch,
In den MSDN-BOL steht:
demnach sollte bastlas CASTerei funktionieren.
Grüße
Biber
In den MSDN-BOL steht:
The SQL-2003 timestamp data type is equivalent to the Transact-SQL datetime data type.
demnach sollte bastlas CASTerei funktionieren.
Grüße
Biber
Moin solaris-ch,
das Thema ist zwar als erledigt markiert, aber hier noch ein Hinweis, wie Du die "enormen Performance - Gelüste" etwas einschränken kannst. Die liegen nämlich nicht an den Converts an sich, sondern speziell an dem Convert auf den Timestamp. Wenn also nur die Vergleichswerte konvertiert werden, geht es schneller. Das kann dann etwa so aussehen:
Gruß, Mad Max
das Thema ist zwar als erledigt markiert, aber hier noch ein Hinweis, wie Du die "enormen Performance - Gelüste" etwas einschränken kannst. Die liegen nämlich nicht an den Converts an sich, sondern speziell an dem Convert auf den Timestamp. Wenn also nur die Vergleichswerte konvertiert werden, geht es schneller. Das kann dann etwa so aussehen:
declare @Datum datetime
select @Datum = convert (datetime, convert (varchar (20), getdate (), 112), 112)
select * from db.user.tbl
where TimeStamp >= dateadd (d, -1, @Datum) and TimeStamp < @Datum
Gruß, Mad Max
Hallo Mad Max!
Hast natürlich völlig recht ...
Vielleicht noch effizienter:
Grüße
bastla
Hast natürlich völlig recht ...
Vielleicht noch effizienter:
declare @Datum datetime
declare @Datum1 datetime
select @Datum = convert (datetime, convert (varchar (20), getdate (), 112), 112)
select @Datum1 = dateadd (d, -1, @Datum)
select * from db.user.tbl
where TimeStamp >= @Datum1 and TimeStamp < @Datum
bastla