Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

MSSQL Records zwischen Gestern Mitternacht und Heute Mitternacht

Frage Entwicklung Datenbanken

Mitglied: solaris-ch

solaris-ch (Level 1) - Jetzt verbinden

18.09.2008, aktualisiert 19.09.2008, 10775 Aufrufe, 9 Kommentare

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!
Mitglied: Biber
18.09.2008 um 16:49 Uhr
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:
01.
SELECT deitab.* 
02.
FROM 
03.
db.user.tbl deitab 
04.
WHERE 
05.
 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
Bitte warten ..
Mitglied: solaris-ch
18.09.2008 um 16:55 Uhr
Hi Biber!

Du hast mich effektiv nicht verstanden

Ich suche nicht den Code für mYsql, sondern für mSsql...
Bei MSSQL gibts kein CURDATE, INTERVAL geht so auch nicht...

In MySQL wüsste ich auch wie ich das Problem lösen kann. Aber eben nicht so in MSSQL...
Und ich muss die Daten aus MSSQL raus spoolen.

Gruss
Bitte warten ..
Mitglied: VW
18.09.2008 um 17:31 Uhr
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:
01.
SELECT * 
02.
FROM 
03.
db.user.tbl 
04.
WHERE 
05.
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
Bitte warten ..
Mitglied: bastla
18.09.2008 um 21:08 Uhr
Hallo solaris-ch!

Vielleicht so:
01.
WHERE CONVERT(VARCHAR(8), TimeStamp, 112) = CONVERT(VARCHAR(8), GETDATE() - 1, 112)
Grüße
bastla
Bitte warten ..
Mitglied: Biber
18.09.2008 um 22:20 Uhr
Moin solaris-ch,

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
Bitte warten ..
Mitglied: solaris-ch
19.09.2008 um 09:00 Uhr
Hi Bastla

besten Dank für deine Hilfe! Dieser Weg funktioniert... wenn auch mit enormen Performance - Gelüsten aufgrund des Casterei.

Vielen Dank!
Bitte warten ..
Mitglied: MadMax
19.09.2008 um 13:15 Uhr
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:
01.
declare @Datum datetime 
02.
select @Datum = convert (datetime, convert (varchar (20), getdate (), 112), 112) 
03.
select * from db.user.tbl 
04.
where TimeStamp >= dateadd (d, -1, @Datum) and TimeStamp < @Datum
Gruß, Mad Max
Bitte warten ..
Mitglied: solaris-ch
19.09.2008 um 13:32 Uhr
Das geht ja echt fix! Besten Dank! Ist mindestens 10 mal schneller wie die erste Variante!

Vielen Dank an dich!

Gruss
Bitte warten ..
Mitglied: bastla
19.09.2008 um 13:40 Uhr
Hallo Mad Max!

Hast natürlich völlig recht ...

Vielleicht noch effizienter:
01.
declare @Datum datetime 
02.
declare @Datum1 datetime 
03.
select @Datum = convert (datetime, convert (varchar (20), getdate (), 112), 112) 
04.
select @Datum1 = dateadd (d, -1, @Datum) 
05.
select * from db.user.tbl 
06.
where TimeStamp >= @Datum1 and TimeStamp < @Datum
Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
DNS
gelöst SPF records (3)

Frage von itnobby zum Thema DNS ...

DNS
BAD PTR Record beim Mailversand (4)

Frage von Markowitsch zum Thema DNS ...

Installation
Installations Recorder Automate (2)

Frage von mexx991 zum Thema Installation ...

DNS
gelöst DNS A und AAAA ipv6 records (4)

Frage von noise1 zum Thema DNS ...

Neue Wissensbeiträge
Linux Netzwerk

Ping und das einstellbare Bytepattern

(1)

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(3)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
SAN, NAS, DAS
MSA 2050 RAID Konfig (27)

Frage von Leo-le zum Thema SAN, NAS, DAS ...

Netzwerkmanagement
Windows Server 2008 R2: "netsh reset" nicht verfügbar? (11)

Frage von RickTucker zum Thema Netzwerkmanagement ...

Outlook & Mail
Outlook Suche liefert kein Ergebnise mehr (8)

Frage von Bjoern-B zum Thema Outlook & Mail ...

Windows Server
gelöst "Kiosk"System für Demoversion und neue Versionen einer Anwendung (7)

Frage von kpieper zum Thema Windows Server ...