Startseite ¦  was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews ¦  sonstiges
kylix ¦  tutorials ¦  online shop ¦  fotos ¦  Add&Win Gewinnspiel


Willkommen Gast. Bitte einloggen oder registrieren.
17.05.2012, 02:45:03
Übersicht Hilfe Suche Einloggen Registrieren

+  SwissDelphiCenter Forum
|-+  German Forums
| |-+  Datenbank Forum
| | |-+  "frac()" In Mssql?
« vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: "frac()" In Mssql?  (Gelesen 1803 mal)
Berens
Gast
« am: 24.09.2005, 12:59:13 »

Hallo!
Wie kann ich bei einer MSSQL Abfrage nur die Nachkommawerte eines Datenbankfeldes vergleichen lassen?

Code:
SELECT * FROM t_TERMINE WHERE FRAC(dt_Start) > 0.2;

funktioniert nicht, weil (Ado Verbindung zu einer Access-Datenbank) es halt MSSQL ist. Wie mache ich diese Abfrage?

Aufgabe: Alle Termine anzeigen lassen, die am Tag nach X Uhr anfangen. Da der Datumswert jedoch immer unterschiedlich ist, kann ich nicht pauschal sachen "> irgendwas". Alternativen zu der Abfrage oben willkommen.
« Letzte Änderung: 26.09.2005, 10:59:11 von Berens » Gespeichert
Jailbird
Hero Member
*****
Offline Offline

Beiträge: 1866

34030132 jailbird_24@hotmail.com
WWW
« Antworten #1 am: 24.09.2005, 13:29:58 »

Du kannst ein wenig tricksen. Ich geh jetzt mal davon aus, dass uns die letzten beiden Stellen interessieren

Code:
SELECT *
FROM Tabelle1
WHERE RIGHT(Tabelle1.datum, 2) > 05;

Ich weiss, ist keine schöne Lösung, aber Access-SQL zickt sowieso
Gespeichert

Berens
Gast
« Antworten #2 am: 24.09.2005, 13:56:49 »

Sorry [img src="style_emoticons/[#EMO_DIR#]/sad.gif" style="vertical-align:middle" emoid=":(" border="0" alt="sad.gif" /]

Das Problem ist dass _mich_ garkeine Stellen interessieren [img src="style_emoticons/[#EMO_DIR#]/wink.gif" style="vertical-align:middle" emoid=";)" border="0" alt="wink.gif" /] sondern ich eine floattostr(strtotime('08:00')) (z.b.) anhänge die auch mal 0,333333333333333 sein kann (wobei bei SQL die Trennung bei Kommazahlen 0.33 sein muss und nicht 0,33 *Seufz*).

Wenn ich nun also nur die letzten beiden Stellen von Rechts vergleiche könnte es ja sein, dass er mit alle Ergebnisse zumindest rundet und dann sogar alle einträge ab 07:58 anzeigt oder so ? (!)

Gespeichert
Berens
Gast
« Antworten #3 am: 24.09.2005, 13:59:21 »

Ausserdem gibt Right bei einem Zeitwert, wo die Uhrzeit = 0 ist (Datum egal) die letzten beiden Zeichen vom Jahr zurück, und das ist sehr gefährlich.
Gespeichert
Jailbird
Hero Member
*****
Offline Offline

Beiträge: 1866

34030132 jailbird_24@hotmail.com
WWW
« Antworten #4 am: 24.09.2005, 15:05:19 »

Ja...ich weiss halt auch nix bessers...
du könntest höchstens was versuchen mit (feld - FLOOR(feld)) > 0.05
oder sowas
Gespeichert

Elias Zurschmiede
Global Moderator
Sr. Member
*****
Offline Offline

Beiträge: 411



WWW
« Antworten #5 am: 24.09.2005, 15:08:23 »

Hallo

Schau dir mal [a href="http://www.sql-server-performance.com/bs_date_time.asp" target="_blank"]http://www.sql-server-performance.com/bs_date_time.asp[/a] an (How to Search by Time)
Vielleicht hilfts Dir ja weiter...
Gespeichert

delight software gmbh
http://www.delight.ch
Berens
Gast
« Antworten #6 am: 24.09.2005, 15:11:14 »

Auf die Idee kam ich auch, allerdings spielen dir dabei MSDN und die Access Hilfe einen streich. Die korrekte Abfrage lautet:
q.sql.add(
'Select * FROM Termine Where Abs([dt_Start]-Int([dt_Start]) > ' + stringReplace(FloatToStr(frac(z)),',','.',[rfReplaceAll]));

Wobei Z der DateTime Wert für die gesuchte Uhrzeit ist.

Danke Jailbird!
Gespeichert
Berens
Gast
« Antworten #7 am: 24.09.2005, 15:15:43 »

Für die Nachwelt: Der Link von Elias ist auch wirklich net schlecht. Danke [img src="style_emoticons/[#EMO_DIR#]/smile.gif" style="vertical-align:middle" emoid=":)" border="0" alt="smile.gif" /]
Gespeichert
Seiten: [1] Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS