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

Zeitraum - Aktuelles Datum weniger 30 Tage - via MS SQL berechnen

Frage Entwicklung Datenbanken

Mitglied: diskskin

diskskin (Level 1) - Jetzt verbinden

24.11.2008, aktualisiert 25.11.2008, 31352 Aufrufe, 6 Kommentare

Hallo zusammen,

es existieren zwar einige Beiträge, die sich mit diesem Thema beschäftigen, dennoch
habe ich nichts gefunden, was eindeutig passen würde. Deshalb meine Frage:

Wie berechne ich in einer WHERE-Bedingung unter MS SQL 2005 einen Zeitraum vom aktuellen
Datum und 30 Tage zurück. Also z.B. von Heute (24.11.2008) bis zum 24.10.2008? Die Datenbank
soll alle Datensätze zurückliefern, die in diesem Zeitraum liegen.

Danke im voraus!
Beste Grüße
ds
Mitglied: Biber
24.11.2008 um 16:54 Uhr
Moin diskskin,

dafür ist die DateDiff()-Funktion gedacht. Hier jetzt mal als SQL bzw. T-SQLSkalarfunktion, nicht als VB/VBSkript-Implementierung.

Beispiel:

01.
SELECT * From DyTable  
02.
Where DATEDIFF(day,  DyTable.DyTimestamp, CURRENT_TIMESTAMP) <= 30;
Geht natürlich nicht nur mit Timestamp-Datumsfeldern, sonder auch mit date/datetime.

Grüße
Biber
Bitte warten ..
Mitglied: diskskin
25.11.2008 um 10:54 Uhr
Moin Biber,

Danke für die schnelle Antwort. Klappt Prima! Ohne das Du jetzt Werbung
betreiben müßtest, kannst Du mir vielleicht ein Buch empfehlen, wo ich diese
Dinge schnell und übersichtlich nachschlagen kann?

Beste Grüße
diskskin
Bitte warten ..
Mitglied: diskskin
25.11.2008 um 11:18 Uhr
Moin nochmal,

wenn ich den Zeitraum von einem Monat haben möchte, dann kann ich doch
auch folgendes schreiben:

WHERE DATEDIFF(month, [Datum aus der Datenbank], CURRENT_TIMESTAMP) <= 1;

Oder?

Beste Grüße
ds
Bitte warten ..
Mitglied: Biber
25.11.2008 um 13:16 Uhr
Moin diskskin,

natürlich kannst Du das schreiben, ist ja ein freies Land hier.
Aber einen Unterschied macht es trotzdem.
Denn Du hättest, wenn es sich bei den Datumswerten zufällig um den 1.12.2008 und den 31.1.2009 handeln würde,auch nur "einen Monat oder weniger" Unterschied, da die Datediff()-Implementierung nur ganzzahl-Werte rückliefert.
Aber in diesem Fall würden bei Dir ca. 60 und damit doppelt so viele Tage berücksichtigt als meine 30 Tage.

Zum Nachschlagen bei MS-SQL benutze ich ich meist die BOL oder MSDN - habe da selbst nichts in Papierform.

Grüße
Biber
Bitte warten ..
Mitglied: diskskin
25.11.2008 um 13:21 Uhr
Alles klar. Danke.

Ja, ich habe das Statement jetzt so umgebaut, dass nur Datensätze geliefert
werden, die aus dem aktuellen Monaten stammen:

(DATEDIFF(month, [Datum aus der DB], CURRENT_TIMESTAMP) = 0)

Klappt auch wunderbar!

Beste Grüße
ds
Bitte warten ..
Mitglied: Biber
25.11.2008 um 15:24 Uhr
Moin siskskin,

letzter Nachtrag:

ich will mir ja nicht den Ruf eines Erbsenzählers einhandeln, aber...

"Alle Datensätze aus dem aktuellen Monat" ist wieder etwas ganz anderes und weder gleichbedeutend mit "max. 30 Tage alt" noch mit "Anzahl Monate zwischen den Datumswerten kleiner gleich 1".

Welche Variante Du fachlich/inhaltlich benötigst, das kannst nur Du einschätzen, aber Du solltest diese Abfragen nicht mischen/nicht als austauschbar ansehen.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Datenbanken
gelöst MS SQL Abfragen und Formulare in Webseite einbinden (3)

Frage von Machello zum Thema Datenbanken ...

Backup
Backup-Software für IIS und MS SQL (2)

Frage von Ravelux zum Thema Backup ...

Datenbanken
MS SQL - Update Text Feld mit Steuerzeichen (4)

Frage von emeriks zum Thema Datenbanken ...

Windows Server
gelöst Ms sql management studio 2012 Konfigurationsmanagerstartet nicht (3)

Frage von XPFanUwe zum Thema Windows Server ...

Neue Wissensbeiträge
Google Android

Cyanogenmod alternative Downloadquelle

(5)

Tipp von Lochkartenstanzer zum Thema Google Android ...

Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(5)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Statische Routen mit Shorewall, ISC-DHCP Server konfigurieren für Android Devices (24)

Frage von terminator zum Thema LAN, WAN, Wireless ...

Server
gelöst Wie erkennen, dass nur deutsche IPs Zugang zu einer Website haben? (22)

Frage von Coreknabe zum Thema Server ...

Hardware
16-20 Port POE Switch mit VLAN (17)

Frage von thomasreischer zum Thema Hardware ...

Windows Server
Exchange HyperV Prozessorlast (17)

Frage von theoberlin zum Thema Windows Server ...