Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MS SQL >> SQL Abfrage als DTS Paket (https://www.delphipraxis.net/37543-ms-sql-sql-abfrage-als-dts-paket.html)

Computerbabalulu 7. Jan 2005 04:46


MS SQL >> SQL Abfrage als DTS Paket
 
Hi :hi:

Ich hoffe hier kennt sich einer mit MS SQL Server aus. :cry:

Ich möchte ein DTS Paket mit einer SQL Abfrage erstellen. Dieses Paket schreibt mir dann regelmäßig Daten in eine Excel Tabelle. Das Funktioniert auch. Nur habe ich noch eine Problem in der Abfrage.

Hier mal der SQL Code:

SQL-Code:
SELECT    article, COUNT(article) AS Auftraege, SUM(DISTINCT qty) AS Prints
FROM        etikett_positions
WHERE    (creation >= GETDATE() - 1) AND (DATEPART(Hour, creation) >= 18)
GROUP BY article
Hier ist mein Problem :

SQL-Code:
WHERE    (creation >= GETDATE() - 1) AND (DATEPART(Hour, creation) >= 18)
Diese Abfrage gibt alle DS vom Vortag bis 23:59:59 Uhr zurück.

Ich brauche aber alle Daten für den Zeitraum (GetDate()-1 18:00 Uhr) bis (GetDate())!

Also über 00:00:00 Uhr hinaus.... Ich habe schon alles möglich versucht das Between hin zu bekommen, aber leider bekomme ich das einfach nicht hin. Ich hoffe einer von euch kennt eine Möglichkeit.


Gruß Frank

:dp:

Leuselator 7. Jan 2005 09:28

Re: MS SQL >> SQL Abfrage als DTS Paket
 
Kleine Hilfsfunktion, die ich sehr liebe:
SQL-Code:
CREATE FUNCTION fx_EncodeDate
( @Y  int
, @Mon int
, @D  int
, @H  int = 0
, @Min int = 0
, @S  int = 0
, @MS int = 0
)
RETURNS datetime
AS
BEGIN
  DECLARE @RESULT datetime
      SET @RESULT = dateadd(year,@Y-1900,dateadd(month,@Mon,dateadd(day,@D,-32)))
      SET @RESULT = dateadd(hh,@H,dateadd(n,@Min,dateadd(s,@S,dateadd(ms,@MS,@RESULT))))
   RETURN @RESULT
END
und dann:
SQL-Code:
  SELECT article
       , COUNT(article)   AS Auftraege
       , SUM(DISTINCT qty) AS Prints
    FROM etikett_positions
   WHERE creation >= dbo.fx_EncodeDate(Datepart(Year ,creation),
                                       Datepart(Month,creation),
                                       Datepart(Day ,creation)-1,
                                       18,0,0,0)
     AND creation <= GETDATE()
GROUP BY article
alternativ, ohne Funktion (liest sich nicht so schön):
SQL-Code:
  SELECT article
       , COUNT(article)   AS Auftraege
       , SUM(DISTINCT qty) AS Prints
    FROM etikett_positions
   WHERE creation >= dateadd(hh,18,round(convert(float,creation-1),0,1))
     AND creation <= GETDATE()
GROUP BY article
Gruß

Computerbabalulu 7. Jan 2005 11:22

Re: MS SQL >> SQL Abfrage als DTS Paket
 
Hi Leuselator :hi:

:coder2: Ein Licht geht auf :mrgreen:


Vielen Dank !! Das ist genau das wonach ich gesucht habe. Da sitze ich nun schon zwei Tage dran :stupid:

Vielen lieben Dank für dich schnelle Hilfe.

Gruß Frank

Computerbabalulu 7. Jan 2005 14:12

Re: MS SQL >> SQL Abfrage als DTS Paket
 
Hi Leuselator...


:roll: Leider ist der Code doch nicht richtig...

Ich brauche ja alle Datensätze zwischen 18:00 Uhr und dem aktuellen Datum/Zeit der Abfrage.
Würde heißen, wenn ich die Abfrage am 10.01.2005 um 05:00 Uhr morgens starte, dann wäre der Zeitraum:

09.01.2005 18:00:00 bis 10.1.2005 05:00:00 Uhr

Kannst du dir das bitte nochmal anschauen :stupid:

Danke

liebe Grüße Frank

Leuselator 8. Jan 2005 22:45

Re: MS SQL >> SQL Abfrage als DTS Paket
 
Stimmt:


SQL-Code:
SELECT article
       , COUNT(article)   AS Auftraege
       , SUM(DISTINCT qty) AS Prints
    FROM etikett_positions
   WHERE creation >= dbo.fx_EncodeDate(Datepart(Year ,GETDATE()), // hier war creation Unsinn
                                       Datepart(Month,GETDATE()),
                                       Datepart(Day ,GETDATE())-1,
                                       18,0,0,0)
     AND creation <= GETDATE()
GROUP BY article
SQL-Code:
  SELECT article
       , COUNT(article)   AS Auftraege
       , SUM(DISTINCT qty) AS Prints
    FROM etikett_positions
   WHERE creation >= dateadd(hh,18,round(convert(float,getdate()-1),0,1)) // und hier auch
     AND creation <= GETDATE()
GROUP BY article
Gruß

Computerbabalulu 9. Jan 2005 14:22

Re: MS SQL >> SQL Abfrage als DTS Paket
 
Hi Leuselator

Danke dir nochmals für deine Hilfe!! :thumb:

Werde es nachher auf dem Server testen....! Melde mich wieder :stupid:

Also nochmals vielen Dank!

liebe Grüße
Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 Uhr.

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