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

letzte Woche eines Monats selectieren

Frage Entwicklung Datenbanken

Mitglied: Messiah-net

Messiah-net (Level 1) - Jetzt verbinden

03.07.2008, aktualisiert 08.07.2008, 3357 Aufrufe, 9 Kommentare

Hi

Ich habe eine Tabelle mit eine Datum (leider ein char(17) --> 20080703 14:58:32)

Jetzt möchte ich in einem SELECT * nur die Werte haben die NICHT in der letzten Woche eines Monats sind.
Mitglied: Logan000
03.07.2008 um 16:24 Uhr
Moin
Was genau ist denn die letzte Woche eines Monats?
Die letzen 7 Tage?
Oder die letzte Kalenderwoche des Monats?
Oder die letzte Arbeitswoche?

Gruß L.
Bitte warten ..
Mitglied: Logan000
03.07.2008 um 16:38 Uhr
Egal hier ein Bsp. für die letzten 7 tage:

SELECT * FROM Tabelle
WHERE cast(datum as Datetime)
Not BETWEEN
cast( '01.'+ cast(Month(cast(datum as Datetime))+1 as varchar(50)) + '.2008 01:01:01' as datetime) -8
AND
cast( '01.'+ cast(Month(cast(datum as Datetime))+1 as varchar(50)) + '.2008 01:01:01' as datetime) -1

(Auf einen SQL 2005 getestet.)
Gruß L.
Bitte warten ..
Mitglied: Messiah-net
03.07.2008 um 17:02 Uhr
HI!
JA genau DAS soll es sein
Sieht auch ganz gut aus, allerding habe ich ein Problem, folgender Code funktioniert nicht:

SELECT * FROM aaaa
WHERE
(updatedOn NOT IN (SELECT TOP 3 updatedOn FROM aaaa ORDER BY updatedBy, updatedOn DESC))
AND (updatedOn NOT IN (SELECT TOP 1 updatedOn FROM aaaa ORDER BY updatedBy, updatedOn ASC))

AND CAST(updatedOn as DATETIME)
NOT BETWEEN CAST( '01.' + CAST(MONTH(CAST(updatedOn AS DATETIME)) + 1 AS VARCHAR(50)) + '.2008 01:01:01' AS DATETIME) -8
AND CAST( '01.'+ CAST(MONTH(CAST(updatedON AS DATETIME))+1 AS VARCHAR (50)) + '.2008 01:01:01' AS DATETIME) -1

Und des weiteren, ist diese Variante an das Jahr 2008 gebunden!
Bitte warten ..
Mitglied: Logan000
04.07.2008 um 08:22 Uhr
Moin

Was genau funktioniert nicht.

Und des weiteren, ist diese Variante an das Jahr 2008 gebunden!
Ich wollte den Konvertierungsterror nicht zu weit treiben.

cast(Year(getdate()) as varchar(4)) liefert das akt. Jahr
Bitte warten ..
Mitglied: Messiah-net
04.07.2008 um 10:28 Uhr
Die TOP 3 Funktion funktioniert nicht.

Ich habe mehrere Personen (updatedBy) und will von jedem die letzten 3 Einträge NICHT haben
Bitte warten ..
Mitglied: Logan000
04.07.2008 um 11:13 Uhr
Natürlich nicht.
Wenn Du mehrere Personen hast und von jedem die letzen 3 Einträge nicht haben möchtest, Kommen ja mehr zusammen wie .
TOP liefert dir aber exakt die ersten 3 Einträge.
Bitte warten ..
Mitglied: Messiah-net
04.07.2008 um 11:57 Uhr
Danke, habe es jetzt folgendermasen gelöst:

SELECT *
FROM Budget AS tempTable1
WHERE updatedOn NOT BETWEEN
DATEADD("d", -7, DATEADD("d", -DAY(CAST(updatedOn as Datetime)), DATEADD("m", 1, CAST(updatedOn AS Datetime))))
AND
DATEADD("d", -DAY(CAST(updatedOn as Datetime)), DATEADD("m", 1, CAST(updatedOn AS Datetime)))
AND
tempTable1.updatedOn NOT IN(
(SELECT TOP 3 updatedOn
FROM Budget AS tempTable2
WHERE tempTable1.updatedby = tempTable2.updatedby ORDER BY updatedOn DESC)
)
;


Jetzt muss ich das nur noch in nen DELETE umwandeln, allerdings auch nicht so einfach, da ich ja temporäre tabellen habe
Bitte warten ..
Mitglied: Biber
05.07.2008 um 18:22 Uhr
Moin messiah_net,

Jetzt muss ich das nur noch in nen DELETE umwandeln, allerdings auch nicht so einfach, da ich ja temporäre tabellen habe
Wo denn? Ändere doch einfach die zuletzt gepostete Lösung so um, dass Du aus dem allerersten "SELECT *" ein "DELETE" machst.

Vielleicht bist Du ja auch gedanklich schon beim nächsten Problem, aber alle anderen, die hier mitlesen, sind immer noch bei "letzte Woche eines Monats selectieren".
Was macht denn diese Anforderung?
Ist das jetzt erledigt?

Dann können wir etwaige Probleme mit globalen oder userbezogenen temporary tables gerne in einem neuen Thread diskutieren.

Grüße
Biber
Bitte warten ..
Mitglied: Messiah-net
08.07.2008 um 13:44 Uhr
Das Problem hat sich gelöst (auch mit delete)
Allerings hab ich noch ne Zusatzaugabe

Jett hätte ich gerne die letzten 3 Einträge eines Users an verschiedenen Tagen....


SELECT * FROM Master AS master1 WHERE updatedOn NOT BETWEEN DATEADD("d", -6, DATEADD("d", -DAY(CAST(updatedOn as Datetime)), DATEADD("m", 1, CAST(updatedOn AS Datetime)))) AND DATEADD("d", -DAY(CAST(updatedOn as Datetime))+1, DATEADD("m", 1, CAST(updatedOn AS Datetime))) AND master1.updatedOn NOT IN((SELECT TOP 3 updatedOn FROM JBPMaster AS master2 WHERE master1.updatedBy = master2.updatedBy ORDER BY updatedOn DESC))
Bitte warten ..
Ähnliche Inhalte
Neue Wissensbeiträge
RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(10)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Router & Routing

PfSense auf Supermicro Intel Xeon D-15x8 SoC Bare Bone

Tipp von Dobby zum Thema Router & Routing ...

Heiß diskutierte Inhalte
Windows 10
Windows für Privatanwender "nicht mehr handhabbar" (26)

Frage von FA-jka zum Thema Windows 10 ...

LAN, WAN, Wireless
Brauche Hilfe: Mit (schnellem) WLAN Strecke überbrücken (23)

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

Basic
Programmierung von Windows Programmen (10)

Frage von Ghost108 zum Thema Basic ...