AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL oder Delphi: Datumsbereich von Montag der Vorwoche bis Sonntag der Vorwoche
Thema durchsuchen
Ansicht
Themen-Optionen

SQL oder Delphi: Datumsbereich von Montag der Vorwoche bis Sonntag der Vorwoche

Ein Thema von juergen · begonnen am 6. Jan 2016 · letzter Beitrag vom 6. Jan 2016
Antwort Antwort
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.174 Beiträge
 
Delphi 11 Alexandria
 
#1

SQL oder Delphi: Datumsbereich von Montag der Vorwoche bis Sonntag der Vorwoche

  Alt 6. Jan 2016, 10:53
Datenbank: Pervasive • Version: 10.1 • Zugriff über: PDAC
Hallo zusammen,

ich suche eine Möglichkeit den Datumsbereich vom Montag der Vorwoche bis zum darauffolgenden Sonntag der Vorwoche zu ermitteln, egal welchen Tag in der Woche ich das aufrufe. Das Datum liegt in einer Tabelle als String vor im Format JJJJMMTT.
Es kann SQL sein oder Delphi.

Ich habe zwar schon einiges ausprobiert, scheitere bei Pervasive aber an der Syntax. Ich erhalte immer ein "Expression evaluation Error".
Z.B. Ermittlung des letzten Sonntages:
Code:
SELECT DATEADD(DAY, DATEDIFF(DAY, '19000107', CurDate()) / 7 * 7, '19000107')
Vielen Dank schon mal vorab für eure Hilfe!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)

Geändert von juergen ( 6. Jan 2016 um 10:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.073 Beiträge
 
Delphi 12 Athens
 
#2

AW: SQL oder Delphi: Datumsbereich von Montag der Vorwoche bis Sonntag der Vorwoche

  Alt 6. Jan 2016, 11:18
Also erstmal mußt du den String in ein DATE umwandeln.
www.forumtopics.com/busobj/viewtopic.php?t=63554

Und dann einfach entweder zuerst "minus 7" oder am Ende, um in die letzte Woche zu kommen.
Von dem Datum kannst du dir dann den Wochentag geben lassen, als Zahl, und mit dessen Wert dann den Wochenanfang und das Ende ausrechnen.
z.B.: http://www.postgresql.org/message-id...21571@wolff.to
eventuell date_part('DOW', ...) oder extract(dow from ...)

Vielleicht hat du Glück und es gibt in Pervasive auch schon was Fertiges, so ala
Delphi-Referenz durchsuchenStartOfTheWeek Delphi-Referenz durchsuchenEndOfTheWeek

Hier was zum Angucken:
Delphi-Quellcode:
function StartOfTheWeek(const AValue: TDateTime): TDateTime;
begin
  Result := DateOf(AValue) - (DayOfTheWeek(AValue) - 1);
end;

X := StartOfTheWeek(StrToDate(...));
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 6. Jan 2016 um 11:39 Uhr)
  Mit Zitat antworten Zitat
noisy_master

Registriert seit: 17. Jun 2009
Ort: Wolfenbüttel/Baddeckenstedt
260 Beiträge
 
Delphi XE5 Professional
 
#3

AW: SQL oder Delphi: Datumsbereich von Montag der Vorwoche bis Sonntag der Vorwoche

  Alt 6. Jan 2016, 11:30
Da war Himitsu doch etwas schneller....

so sollte es gehen:

Delphi-Quellcode:
var LastSunday, LastMonday : TDateTime;
    day : integer;
begin   
  day := DayOfTheWeek(now());
  LastSunday := IncDay(now(), -day);
  LastMonday := IncDay(LastSunday ,-6);
end;
Dirk
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.073 Beiträge
 
Delphi 12 Athens
 
#4

AW: SQL oder Delphi: Datumsbereich von Montag der Vorwoche bis Sonntag der Vorwoche

  Alt 6. Jan 2016, 11:34
so sollte es gehen:
Nur halt in SQL und nicht Pascal.

Aber man kann diese Funktion bestimmt in eine DLL schieben, sie im DB-Server laden und dann verwenden.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: SQL oder Delphi: Datumsbereich von Montag der Vorwoche bis Sonntag der Vorwoche

  Alt 6. Jan 2016, 12:08
Z.B. Ermittlung des letzten Sonntages:
hab keine Ahnung von Pervasive, aber sowas sollte gehen:
Code:
select dayofweek(convert('2005-02-05',sql_date))
--# oder
select dayofweek(curdate())
Zitat:
Sunday is day 1, .. to Saturday = day 7.
Problem könnten die Language Settings der DB oder letztlich der Clientconnection sein, sprich in welcher Textnotation erwartet die DB ein Datum. GgF. gibt's da wie bei anderen DB auch die Möglichkeit, eine Formatmaske explizit mitzugeben.
Wenn Du den Wochentag hast, kannst Du den glaub ich auch bei Pervasive einfach verrechnen. Also curdate() - DOW+1 für letzten Montag oder so
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.174 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: SQL oder Delphi: Datumsbereich von Montag der Vorwoche bis Sonntag der Vorwoche

  Alt 6. Jan 2016, 12:17
Hallo,

ich habe nicht kreativ genug nachgedacht.
Ich wollte immer *zuerst* den Montag der Vorwoche ermitteln und dann den Sonntag (Denkweise VON Datum BIS Datum).
Euer Schubs in die richtige Richtung hat mir weitergeholfen. Ich ermittle erst den letzten Sonntag und ziehe dann 6 Tage ab und lande somit auf den Montag der Vorwoche.

Vielen Dank für Eure Unterstützung!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:43 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