php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben || php-forumjetzt anmelden
 

SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 04-06-2006, 19:59
nicolebi24
 Newbie
Links : Onlinestatus : nicolebi24 ist offline
Registriert seit: May 2006
Beiträge: 11
nicolebi24 ist zur Zeit noch ein unbeschriebenes Blatt
Standard MSSQL aktuelle Uhrzeit +- xx Minuten Toleranz

Hallo,

Ich möchte von der aktuellen Uhrzeit & Datum alle Datensätze die 30 Min. vor der aktuellen Zeit waren und 30 Min. danach.

In MySql sieht das wie folgt aus und funktioniert auch:

//Alle DS des aktuellen Tages in denen aktuelle Uhrzeit +-30 Min. ist
$query = ("SELECT * FROM Person WHERE letzterLogin BETWEEN ADDTIME( now( ) , -3000 ) AND ADDTIME( now( ) , 3000 ) ORDER BY letzterLogin");

//Alle DS in denen aktuelle Uhrzeit +-30 Min. ist, unabhängig vom Datum. 3000 steht für 30 min und 00 sec
$query = ("SELECT * FROM Person WHERE TIME(letzterLogin) BETWEEN TIME(ADDTIME( now( ) , -3000 )) AND TIME(ADDTIME( now( ) , 3000 )) ORDER BY letzterLogin");

Nur brauch ich das jetzt für einen MSSQL Server 2000.
NOW() und ADDTIME funktionieren bei MSSQL leider nicht.

Das Feld letzterLogin ist vom TYP DATETIME und speichert im Moment, das Datum im folgenden Format (tt.mm.yyyy hh:mm:ss)

DB_NAME und PERSON sind KONSTANTEN!!!


Hab auch ein wenig Code vorbereitet und ein wenig geteste - ohne Erfolg

//1800 entspricht 30 Min., gemessen wird in sec.
$toleranz = "1800";
$time = date("H:i:s");
echo "Aktuelle Uhrzeit: $time";
echo "<br/>";
$time1 = date ("H:i:s", time() + ($toleranz));
echo "Uhrzeit +30 Min: $time1";
echo "<br/>";
$time2 = date ("H:i:s", time() - ($toleranz));
echo "Uhrzeit -30 Min.: $time2";
echo "<br>";

if (!defined('DB_NAME'))
throw new Exception('Es wurde keine Datenbank definiert.');

//Test mit getDate -->PHP Fatal error: Unsupported operand types
$query = 'use '.DB_NAME.'; SELECT * FROM '.PERSON.' WHERE letzterLogin between "'.(getDate()-1/48) .'" AND "'.(getDate() + 1/48).'" ';

//ALLE DS des aktuellen Tages innerhalb der Zeit-Toleranz (30 Min.) ADDTIME gibt es bei MSSQL NICHT
$query = 'use '.DB_NAME.'; SELECT * FROM '.PERSON.' WHERE letzterLogin between $time2 AND $time1 ';
-->Syntax Fehler

Brauche beide Varianten:
1. Alle DS des aktuellen Tages in denen aktuelle Uhrzeit +-30 Min. ist
2. Alle DS in denen aktuelle Uhrzeit +-30 Min. ist, unabhängig vom Datum.

Bin für jede Hilfe dankbar.
Mit Zitat antworten
  #2 (permalink)  
Alt 04-06-2006, 20:54
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

DATEADD ist dein Freund
Mit Zitat antworten
  #3 (permalink)  
Alt 05-06-2006, 14:21
nicolebi24
 Newbie
Links : Onlinestatus : nicolebi24 ist offline
Registriert seit: May 2006
Beiträge: 11
nicolebi24 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hallo,
danke für deine antwort.

kannst du mir mal für mein bsp. die anwort posten, bekomme immer ein PHP Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING zurück

hier der query:

$query = 'use '.DB_NAME.'; SELECT * FROM '.PERSON ' WHERE letzterLogin BETWEEN " '.DATEADD(Minute,-30,GETDATE()).' " AND
" '.DATEADD(Minute,30,GETDATE()).' " ';
Mit Zitat antworten
  #4 (permalink)  
Alt 05-06-2006, 14:30
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wie kommst du denn darauf im 1. Argument das Wort Minute zuübergeben. Schau mal in die OH, bevor du irgendwas anwendest
Mit Zitat antworten
  #5 (permalink)  
Alt 05-06-2006, 15:55
nicolebi24
 Newbie
Links : Onlinestatus : nicolebi24 ist offline
Registriert seit: May 2006
Beiträge: 11
nicolebi24 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hab unter
http://www.eulanda.de/inside/entwick...um/dateadd.htm
nachgeschaut.

wärst du so freundlich und würdest mir dann den richtigen syntax nennen.
Mit Zitat antworten
  #6 (permalink)  
Alt 05-06-2006, 15:58
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

DU hast ein PHP-Syntax-Problem, wie die Fehlermeldung dir sagt.

Wenn du gemäß Regeln mal die [PHP]-Tags verwenden würdest, könntest du anhand der bunten Farben ganz schön erkennen, was sache ist.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich kann und werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Mit Zitat antworten
  #7 (permalink)  
Alt 05-06-2006, 16:10
nicolebi24
 Newbie
Links : Onlinestatus : nicolebi24 ist offline
Registriert seit: May 2006
Beiträge: 11
nicolebi24 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ziemlich rauher umgangston in diesem forum.
hab noch nicht soviel erfahrung mit php darum hab ich auch meine
frage in ein forum gestellt.
Mit Zitat antworten
  #8 (permalink)  
Alt 05-06-2006, 16:13
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

auf deiner angegebenen Seite steht:

Argumente

datepart

Der Parameter, der angibt, für welche Datumseinheit ein neuer Wert zurückgegeben werden soll. Die Tabelle listet die Datumseinheiten und Abkürzungen auf, die von Microsoft® SQL Server™ erkannt werden.

wie kommst du darauf Minute darein zu schreiben? und nimm den Tipp von Tobi zu Herzen!
Mit Zitat antworten
  #9 (permalink)  
Alt 05-06-2006, 18:07
nicolebi24
 Newbie
Links : Onlinestatus : nicolebi24 ist offline
Registriert seit: May 2006
Beiträge: 11
nicolebi24 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hallo,

hab jetzt den syntax-fehler bereinigt. bleibt aber immer noch eine Kleinigkeit anzumerken.

Mein Query sieht so aus:

$query = 'use '.DB_NAME.'; SELECT * FROM '.PERSON. ' WHERE
letzterLogin BETWEEN DATEADD(MI,-60,GETDATE()) AND DATEADD(MI,60,GETDATE()) ';

wenn ich die query mittels print ausgebe, erhalte ich folgendes:
SELECT * FROM Person WHERE letzterLogin BETWEEN DATEADD(MI,-60,GETDATE()) AND DATEADD(MI,60,GETDATE()) Object id #2

Irgendwas passt mit dem DATEADD noch nicht so ganz.
Hat jemand eine Idee??

So das ganze ist ja momentan so aufgebaut, dass es nur für den aktuellen Tag mir die DS anzeigt.

Wie funktioniert das mit dem DATEADD, wenn ich alle DS haben will, die zwischen der Toleranzgrenze liegt?? Bsp. Alle DS die zw. 11.45 und 12.15 liegen unabhängig vom aktuellen Tagesdatum?

Ach übrigens, ich schau vorher schon erst selber nach in Büchern/Internet ob ich dort auf meine Probleme was finde, bevor ich in ein Forum gehe. Darum wäre es sehr hilfreich nicht nur für mich, wenn schon jemand was postet, diese dann auch mit einer kleinen Erklärung/Bsp. versieht, damit Benutzer, die noch nicht so viel Erfahrung mit PHP haben, das ganze dann auch verstehen.
Mit Zitat antworten
  #10 (permalink)  
Alt 06-06-2006, 09:23
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von nicolebi24
wenn ich die query mittels print ausgebe, erhalte ich folgendes:
SELECT * FROM Person WHERE letzterLogin BETWEEN DATEADD(MI,-60,GETDATE()) AND DATEADD(MI,60,GETDATE()) Object id #2
klar, das ist bei MySQL auch nicht anders
Zitat:
Irgendwas passt mit dem DATEADD noch nicht so ganz.
Nö, die Abfrage ist i.O.
Zitat:
Hat jemand eine Idee??
ja, PHP Grundlagen lernen http://de.php.net/manual/en/ref.mssql.php
Zitat:
Ach übrigens, ich schau vorher schon erst selber nach in Büchern/Internet ob ich dort auf meine Probleme was finde, bevor ich in ein Forum gehe. Darum wäre es sehr hilfreich nicht nur für mich, wenn schon jemand was postet, diese dann auch mit einer kleinen Erklärung/Bsp. versieht, damit Benutzer, die noch nicht so viel Erfahrung mit PHP haben, das ganze dann auch verstehen.
Beschreibungen und Beispiele findest du im Manual, hier geben wir nur Tipps zur Problemlösung. Man muss ja nicht nochmals alles niederschreibt, was schon Manual steht.
Mit Zitat antworten
  #11 (permalink)  
Alt 06-06-2006, 18:50
nicolebi24
 Newbie
Links : Onlinestatus : nicolebi24 ist offline
Registriert seit: May 2006
Beiträge: 11
nicolebi24 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hi asp2php

danke für deinen Link.
Nur wo finde ich generell solche Sachen wie DATEADD usw.

Kennst du eine Seite auf der MySQL und MSSQL-Funktion
gegenüber stehen, die die gleiche Funktion haben.

Gruß
Nicole
Mit Zitat antworten
  #12 (permalink)  
Alt 06-06-2006, 20:12
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von nicolebi24
danke für deinen Link.
Nur wo finde ich generell solche Sachen wie DATEADD usw.
mysql.com
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich kann und werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Mit Zitat antworten
  #13 (permalink)  
Alt 06-06-2006, 21:44
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von nicolebi24
Nur wo finde ich generell solche Sachen wie DATEADD usw.
die Online Hilfe (OH) von MS SQL Server reicht allemal, darin steht alles, von der Administration bis zur verfeinerte Einstellungen zur Optimierung des Servers und selbstverständlich auch die komplette Referenz über T-SQL
Zitat:
Kennst du eine Seite auf der MySQL und MSSQL-Funktion
gegenüber stehen, die die gleiche Funktion haben.
Nein, wozu? Lerne MySQL und lerne T-SQL dann wirst du schon wissen, was du einsetzen musst, einen Sinn für diese Gegenüberstellung sehe ich nicht. . Andererseits, eine Gegenüberstellung der Features der jeweiligen DBMS macht natürlich sinn.
Mit Zitat antworten
  #14 (permalink)  
Alt 06-06-2006, 22:31
phoenix20
 Junior Member
Links : Onlinestatus : phoenix20 ist offline
Registriert seit: May 2006
Beiträge: 111
phoenix20 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Irgendwas passt mit dem DATEADD noch nicht so ganz.
Hat jemand eine Idee??


was passt darin nicht?

Ich könnte mir vorstellen, dass irgendwo nur das Datum bzw. Datum+0Uhr vorkommt, wohingegen der query-Ansatz auf Datum+Zeit gerichtet ist.

übrigens laut OH wäre MINUTE zulässig und als Abkürzung MI.
Mit Zitat antworten
  #15 (permalink)  
Alt 06-06-2006, 23:54
nicolebi24
 Newbie
Links : Onlinestatus : nicolebi24 ist offline
Registriert seit: May 2006
Beiträge: 11
nicolebi24 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hallo phoenix,

also in der db wird im feld letzterLogin Datum und Uhrzeit gespeichert.
hab zum test auch nochmals einige DS angelegt. aber es kommen nicht die daten raus, die in der Toleranzgrenze sind - bzw. es kommen gleich gar keine DS raus.

Hat jemand sonst noch einen konstruktiven Vorschlag als in der OH nachzuschauen? Denke es ist im beiderseitigen Interesse dabei was zu lernen.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Warum Texterstellung mit künstlicher Intelligenz richtig gut ist
Warum Texterstellung mit künstlicher Intelligenz richtig gut istKünstliche Intelligenz ist dabei, die Welt zu erobern. Die größten Unternehmen entwickeln Systeme, die einen Text für Sie schreiben können. Und sie machen das sehr gut.

05.01.2022 | Berni

Vorteile eines flexiblen ERP Systems
Vorteile eines flexiblen ERP SystemsEin flexibles ERP System bietet in allen Unternehmensbereichen die Grundlage für eine erfolgreiche Verwaltung, Organisation und Planung aller Prozesse.

01.12.2021 | Berni


 

Aktuelle PHP Scripte

copycockpit

Lassen Sie eine KI in Sekundenschnelle hochwertige Texte für z.B. Blogs, Produkt-Beschreibungen und Landing-Pages schreiben.

17.01.2022 Berni | Kategorie: KI Tools
frase.io

Automatisch Texte von einer KI Schreiben lassen. Die Effizienz von Frase und die geschriebenen Texte machen es einfach, SEO-Texte zu schreiben.

27.12.2021 Berni | Kategorie: KI Tools
Marktplatz für Blog-Marketing und Blog-Vermarktung ansehen Marktplatz für Blog-Marketing und Blog-Vermarktung

Blogmission, hier finden Blogbetreiber (Publisher) und Firmen (Advertiser) einfach und effektiv zueinander.

20.12.2021 Berni | Kategorie: SEO/ DIENSTE
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:50 Uhr.