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.
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.
Kommentar