Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Abfrage über Datepart (https://www.delphipraxis.net/64382-sql-abfrage-ueber-datepart.html)

renekr 2. Mär 2006 22:17

Datenbank: SQL • Version: 2005 • Zugriff über: ADO

SQL Abfrage über Datepart
 
Hallo,
Bin auf der Suche nach einer Lösung:
Will folgendes machen.

Einen Select auf eine Tabelle die einen Datetime wert hat.
Aber als Ergebnis nur die Datensätze die zb.gestern eingegeben worden sind!

Also wenn heute der 2.3.2006 ist dann alle vom 01.03.2006.

Danke.

Bernhard Geyer 2. Mär 2006 22:24

Re: SQL Abfrage über Datepart
 
Was für eine Datenbank? Da hier die Syntax der verschiedenen Datenbank-Managementsysteme unterschiedlich ist die genaue DBMS-Bezeichnung wichtig.
SQL ist keine Datenbank sondern eine Abfragesprache!

renekr 3. Mär 2006 13:58

Re: SQL Abfrage über Datepart
 
Hi,
also
SQL Server 2005 STD.

Zitat:

SQL ist keine Datenbank sondern eine Abfragesprache!
Das ist mir klar deswegen steht ja die Version 2005 noch dabei.
Nächstes mal werde ich es genauer beschreiben.

Danke.

mkinzler 3. Mär 2006 14:17

Re: SQL Abfrage über Datepart
 
SQL-Code:
select <feld> from <tabelle> where <datumsfeld> = ?datum;
Den Paramter setzt du dann auf den gewünschten Wert TADoQuery.Parameter.ParamByName('datum').asDateTim e := '02.03.2006':

marabu 3. Mär 2006 14:22

Re: SQL Abfrage über Datepart
 
Eine Alternative:

SQL-Code:
SELECT * FROM tabelle WHERE DATEDIFF(day, datum, getdate()) = 1
Grüße vom marabu

renekr 3. Mär 2006 16:27

Re: SQL Abfrage über Datepart
 
Hi,
vielen Dank marabu.
Genau das habe ich gesucht.
Viele Dank und ein schönes Weekend.

alzaimar 3. Mär 2006 16:35

Re: SQL Abfrage über Datepart
 
Das Problem ist doch immer wieder, das in einer DateTime-Spalte auch die Uhrzeit drinsteht (oder kann). Weiterhin will man schnelle Abfragen, und das geht nur, wenn der SQL-Server einen Index verwenden kann. Das kann er nicht bei marabus DateDiff-Alternative.

Wenn ich alle Datensätze von einem bestimmten Tag haben will, verwende ich 'BETWEEN':
SQL-Code:
Select * from Tabelle where DateTimeField Between <MyDate> and <MyDate+1>
Ich rechne 'MyDate+1' im Client aus und formatiere das Datum ODBC-Konform, und zwar so:
SQL-Code:
Select * from Tabelle where DateTimeField Between { d '12-24-2005' } and { ts '12-24-2005 23:59:59' }
Die Datumsformatierung mutet exotisch an, ist sie auch, aber MSSQL-konform.

renekr 3. Mär 2006 17:51

Re: SQL Abfrage über Datepart
 
Hi,
das ist zwar schön wenn man einen Client hat,aber ich hatte das Thema bei einem Reporting Service vom SQL.
Wollte auf dem Report immer die Daten von gestern angezeigt bekommen,und da habe ich halt nur SQL zur verfügung und kann nur per SQL das Datum ändern.

und für diesen Zweck hat es optimal hingehauen.

Will ja nicht imemr was am Report selbst ändern.

danke.

Bernhard Geyer 3. Mär 2006 18:54

Re: SQL Abfrage über Datepart
 
Zitat:

Zitat von renekr
Hi,
also
SQL Server 2005 STD.

Zitat:

SQL ist keine Datenbank sondern eine Abfragesprache!
Das ist mir klar deswegen steht ja die Version 2005 noch dabei.

Um es jetzt genau auszukarteln:
Eine Jahreszahl besagt noch gar nichts. Und Jahreszahlen sind kein Alleinstellungsmerkmal von MS
So gibt es diverse SQL-Standard-Versionen welche ebenfalls mit einer Jahreszahl versehen werden so z.B. der SQL-92-Standard.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz