AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Trigger

Ein Thema von Walter Landwehr · begonnen am 19. Jan 2025 · letzter Beitrag vom 20. Jan 2025
Antwort Antwort
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Trigger

  Alt 20. Jan 2025, 15:29
Code:
    if (new.geburtsdatum > '1.1.1900') then
Der älteste lebende Mensch wurde 1908 geboren, also passt das tatsächlich.
Datenbank NULL entspricht diesem Datum
Ein Windowsdatum von 0 (nicht NULL) entspricht 31.12.1899. Der 01.01.1900 wäre dann 1.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#2

AW: Trigger

  Alt 20. Jan 2025, 15:43
Ein Windowsdatum von 0 (nicht NULL) entspricht 31.12.1899. Der 01.01.1900 wäre dann 1.
Bei Firebird steht aber:
Zitat:
The DATE data type in Dialect 3 stores only date without time. The available range for storing data is from January 01, 1 to December 31, 9999.
Intern sieht das noch etwas anders aus:
Zitat:
In storage, a date value or date-part of a timestamp is represented as the number of days elapsed since date zero — November 17, 1898
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert
Online

Registriert seit: 15. Mär 2005
695 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Trigger

  Alt 20. Jan 2025, 16:42
Ein Windowsdatum von 0 (nicht NULL) entspricht 31.12.1899. Der 01.01.1900 wäre dann 1.
Bei Firebird steht aber:
Zitat:
The DATE data type in Dialect 3 stores only date without time. The available range for storing data is from January 01, 1 to December 31, 9999.
Intern sieht das noch etwas anders aus:
Zitat:
In storage, a date value or date-part of a timestamp is represented as the number of days elapsed since date zero — November 17, 1898
kann man auch ganz einfach benutzen um die anzahl der tage seit dem 0 datum zu berechnen

Code:
select current_date-cast('30.12.1899' as date) from rdb$database
ergebnis 45677

die range ist dabei nicht das problem weil der wert ja auch negativ sein kann.

auch das hier geht
Code:
select cast('01.01.0001' as date)-cast('30.12.1899' as date) from rdb$database
ergebnis -693593

Ich finde das verfahren sehr gut gelöst, weil die darstellung sprich umrechnung in tag/monat/jahr ob mit oder ohne schaltjahr unabhängig vom wert ist, der ja nur anzahl tage vor oder hinter 0 darstellt. ich kann mich aus grauer vorzeit noch daran erinnern, das mysql mit einem datum 30.2. nie probleme hatte, auch wenn das immer unsinn war. mag aber sein, das die das mittlerweile auch anders machen.

und ergänzende infos: als timestamp ist das identisch nur mit nachkommastelle, d.h. mittags um 12 ist plus 0,5 usw. später kam dann auch noch die zeitzone mit in die daten. das die nicht negative jahre vor dem jahr 0 unterstützen kann ich nachvollziehen, das braucht auch nicht jede branche und bis zum enddatum im jahr 9999 haben wir noch circa 3mio tage verfügbar, das sollte für fast alle sinnvollen aufgaben auch reichen. Zumindest aus unserer heutigen sicht
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
Firebird 5 Update und Know-how Workshop – 28.8.-29.08.2025 64546 Mörfelden - Walldorf
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert
Online

Registriert seit: 15. Mär 2005
695 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Trigger

  Alt 20. Jan 2025, 17:06
Intern sieht das noch etwas anders aus:
Zitat:
In storage, a date value or date-part of a timestamp is represented as the number of days elapsed since date zero — November 17, 1898
mag ja technisch für binary storage in der datenbank wirklich so sein, wird man aber nirgendwo als tag 0 so finden

Code:
select current_date-45677 from rdb$database
ergibt den 30.12.1899
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
Firebird 5 Update und Know-how Workshop – 28.8.-29.08.2025 64546 Mörfelden - Walldorf
  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 18:16 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-2025 by Thomas Breitkreuz