Top-Themen

Aktuelle Themen (A bis Z)

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

MySQL - Timestamp vergleichen

Frage Entwicklung Datenbanken

Mitglied: Dani

Dani (Level 5) - Jetzt verbinden

08.09.2008, aktualisiert 10.09.2008, 7883 Aufrufe, 7 Kommentare

Moin DB Jungs,

ich habe hier eine MySQL Datenbankserver der Version 5.0.32 am Laufen. Auf diesem Server läuft eine Datenbank mit der Tabelle "users". So sieht ein Eintrag aus:
FeldTypKollationAttributeNullStandardExtra
idint(11) Nein auto_increment
user_ipvarchar(100)latin1_swedish_ci JaNULL
user_idvarchar(50)latin1_swedish_ci Nein0
user_nickvarchar(100)latin1_swedish_ci NeinUnknown
admin_ipvarchar(100)latin1_swedish_ci JaNULL
admin_idvarchar(50)latin1_swedish_ci Nein0
admin_nickvarchar(100)latin1_swedish_ci NeinUnknown
typevarchar(10)latin1_swedish_ci NeinS
reasonvarchar(255)latin1_swedish_ci Nein
created int(11) Nein0
lengthvarchar(100)latin1_swedish_ci Nein
server_ipvarchar(100)latin1_swedish_ci Nein
server_namevarchar(100)latin1_swedish_ci NeinUnknown


iduser_ipuser_iduser_nickadmin_ipadmin_idadmin_nicktypereasoncreatedlengthserver_ipserver_name
417NULL52609HILDEGUARDxx4.1xx.9x.1x42199775testSfehleingabe12208285255website

Nun möchte ich abfragen, ob die Sperre des Users mit der user_id "2199775" breits abgelaufen ist? Sprich es wird in die Spalte "created" ein UNIX-Timestamp geschrieben. In "length" stehen dann immer Minuten drin - keine Sekunden oder Stunden. Das kann ich auch nicht abändern, auf ein einheitliches Format!

Somit muss ich eigentlich "nur" abfragen, ob der Timestamp in der Zelle + Länge größer ist als der aktuelle Zeitstempel. In SQL sieht die Abfrage dann so aus:
01.
SELECT * FROM bans WHERE user_id != '' AND user_id = '52609' AND UNIX_TIMESTAMP() < (created +(length*60));
Leider wird die Sperre auch noch nach 10 Minuten als "aktiv" ausgegeben. Was ich aber nicht nachvollziehen kann.
Meine Vermutung ist, dass es Probleme mit der Multilikation gibt...aber kann kein wirklichen Fehler entdecken!


Gruss,
Dani
Mitglied: Biber
08.09.2008 um 07:47 Uhr
Moin Dani,

Meine Vermutung ist, dass...
Okay, dann lass es uns doch prüfen.
Ändere Dein Statement doch mal kurz so ab, dass alle relevanten Details bzw. Fehlerursachen im Resultset enthalten sind.
01.
SELECT b.user_id, Unix_timestamp() as UnixTS, b.created, b.length,  
02.
 (b.created + (b.length*60)) as EndUnixTScalc 
03.
FROM bans b  
04.
WHERE b.user_id = 52609 
P.S. Habt Ihr eigentlich irgendwelche Regeln, nach denen Ihr Datentypen oder Feldlängen auswählt oder macht das immer noch Stevie Wonder bei Euch?

Grüße
Biber
^^[Edit] Montägliche Tippfehlerberichtigung s.u. [/Edit]
Bitte warten ..
Mitglied: Dani
08.09.2008 um 12:10 Uhr
Moin Biber,
auch dieses DB - Design ist nicht auf unserem Mist gewachsen! Sonst hätte ich es einfach angepasst bzwl. die Jungs mal "rund" gemacht. Ich habe aber bereits ein BugIssue dies bezüglich in deren Forum eingestellt mit der Bitte das Desgin in v6.0 bitte anzupassen.....

Nun zu dem SQL-Statement:
Das blicke ich ehrlich gesagt noch nicht so....warum "Unix_timestamp as unixts"? Das Attribut gibt es doch gar nicht. Das frisst der SQl-Server auch nicht! Folgender Fehler erscheint:
01.
MySQL meldet:   
02.
#1054 - Unknown column 'Unix_timestamp' in 'field list'
Was ich auch nicht verstehe, warum frägst du 2 Tabellen in "FROM" ab?!


Gruss,
Dani
Bitte warten ..
Mitglied: Biber
08.09.2008 um 12:34 Uhr
Moin Dani,

sorry, es war mir heute morgen wohl doch noch zu früh fürs tippfehlerfreie Posten...
Es muss natürlich Unix_timestamp() [Unix_timestamp-KlammerAuf-KlammerZu] heißen, es ist ja kein Feld, sondern die gleichnamige Funktion.

Und ich gebe nicht zwei Tabellen an, sondern (D)eine Tabelle bans mit einem Alias [b], eben weil ich ja nicht nur Felder aus dieser tablle SELECTen will, sondern auch noch diesen Unix_TimeStamp().
Ich füge die Klammern mal oben im Source nach - ist natürlich dennoch ungetestet wie immer.

Grüße
Biber
Bitte warten ..
Mitglied: Dani
08.09.2008 um 13:45 Uhr
Hi Biber,
kein Ding...geht mir 7 Tage in der Woche so.

Also ich habe das SQL-Statment angepasst. Meines sieht so aus:
01.
SELECT b.user_id, Unix_timestamp() as UnixTS, b.created, b.length, (b.created + (b.length*60)) as EndUnixTScalc FROM bans b WHERE b.user_id = 'test' AND Unix_timestamp() < (b.created + (b.length*60));
Allerdings verstehe ich den Unterschied zu meinem Statement oben nicht. Ich sehe da keinen großen Unterschied bis auf die selektierten Attribute. ???

Die Ausgabe sieht so aus:
user_idUnixTScreatedlengthEndUnixTScalc
test1220890650122089064051220890940

Man sieht also prima, den Vergleich der Zeitstempel....


Gruss,
Dani
Bitte warten ..
Mitglied: Biber
08.09.2008 um 15:15 Uhr
Moin Dani,

oben nicht. Ich sehe da keinen großen Unterschied bis auf die selektierten Attribute. ???
Ähmm ... ooookay......
Eigentlich wollte ich auch nicht mehr damit erreichen als (s.o.) mal alle potentiell fehlerhaft berechneten Spalten auf den Schirm zu bringen.
Magst Du den hoffentlich einzeiligen Resultset mal posten?

Grüße
Biber
Bitte warten ..
Mitglied: Dani
08.09.2008 um 18:19 Uhr
Hi Biber,
hmm....da war wohl ein Table-Tag zu viel drin. Jetzt siehts (siehe oben) schon besser aus.
Ich werd's jetzt mal in Testbetrieb schalten und diese Wochen im Auge behalten. Du erhälst dann pünktlich zum 17 Uhr Feierabend am Freitag mein Feedback.


Gruss,
Dani
Bitte warten ..
Mitglied: Dani
10.09.2008 um 11:29 Uhr
Hi Biber,
der "bug" - Fall wurde bereits mehrmals durchgespielt und tauchte nicht mehr auf.
Ich verstehs zwar immer noch nicht - aber ist mir euch ehrlich gesagt egal.....


Gruss,
Dani
Bitte warten ..
Ähnliche Inhalte
Datenbanken
MySQL - Fehlermeldung beim Anlegen eines TIMESTAMP Feldes
Frage von AndyAhDatenbanken8 Kommentare

Hi NG, beim Anlegen eines TIMESTAMP-Feldes in einer aus Access übernommenen Tabelle bekam ich die Fehlermeldung: Could not set ...

Datenbanken
Zwei Mysql-Datenbanken miteinander vergleichen
gelöst Frage von trallerDatenbanken2 Kommentare

Hallo, ich möchte unter Windows den Inhalt zweier Mysql-Datenbanken vergleichen. Die Datenbanken liegen als .sql vor, und sind auch ...

PHP
Timestamp generator
Frage von gamerffPHP2 Kommentare

Hallo Forum, ich brauch für meine Webseite eine php Funktion die mir die Felder: Tag,Monat,Jahr,Stunde,Minute,Sekunde in eine Zeitstempel umwandelt. ...

Batch & Shell
Terminal FTP Timestamp beibehalten
Frage von Loip104Batch & Shell1 Kommentar

Guten Abend, Ich habe hier ein kleines script bei welchem nur ein paar datein täglich von a noch b ...

Neue Wissensbeiträge
Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 2 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 3 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 4 TagenSicherheit6 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Digitiales Fernsehen

Apple TV: Amazon Prime App ist verfügbar

Information von Frank vor 4 TagenDigitiales Fernsehen4 Kommentare

Die Amazon Prime Video App kann ab sofort auf einem Apple TV ab der 3 Generation installiert werden. Einfach ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...