Witam.
Stworzyłem tabelę w których jednym z pól jest nr pesel.
Chciałbym, żeby w kwerendzie wykonane były obliczenia z nim związane, czyli:
Z nr pesel wyciągnięcie daty urodzenia
data dzisiejsza - data urodzenia = wiek
przedostatnia liczba nr pesel określa płeć osoby= Kobieta Mężczyzna
Idealnym przydałem dla mnie jest wątek https://forum.openoffice.org/pl/forum/v ... esel#p9955 niestety dotyczący programu Calc.
Pozdrawiam
Piotr
Pesel - obliczenia
-
- Posty: 1
- Rejestracja: sob gru 27, 2014 9:11 pm
Pesel - obliczenia
LibreOffice Wersja: 4.3.5.2
Re: Pesel - obliczenia
wartość PESEL winna być tekstem z kontrolą poprawności -- bo forma, a nie wartość, jest istotna.
W arkuszu kalkulacyjnym do pobierania elemetów daty użyj funkcji MID (Fragment.tekstu), do zamiany na liczbę: funkcji VALUE (WARTOŚĆ); do składania roku, niesiąca i dnia w datę: funkcji DATE (DATA); do obliczania wieku w dniach -- różnicy dat, a w latach: różnicy "roków" urodzenia z warunkową modyfikacją o 1 w niektórych sytuacjach. Oczywiście cyfrę kontrolną odpowiedzialną za płeć też wydłubiesz MID-em.
W bazie SQL-owej będą potrzebne analogiczne funkcje SQL. Niestety, jeśli jest to baza wbudowana tj. HSQL 1.8.x, to operacje na datach są w niej mocno okrojone. W przypadku prawdziwej bazy spełniającej SQL-owe standardy, rzecz się prawie-że przenosi: potrzebujesz pobierania fragmentu tekstu (SUBSTR), konwersji str->DATE (date(tekst) i odejmowania dat.
W arkuszu kalkulacyjnym do pobierania elemetów daty użyj funkcji MID (Fragment.tekstu), do zamiany na liczbę: funkcji VALUE (WARTOŚĆ); do składania roku, niesiąca i dnia w datę: funkcji DATE (DATA); do obliczania wieku w dniach -- różnicy dat, a w latach: różnicy "roków" urodzenia z warunkową modyfikacją o 1 w niektórych sytuacjach. Oczywiście cyfrę kontrolną odpowiedzialną za płeć też wydłubiesz MID-em.
W bazie SQL-owej będą potrzebne analogiczne funkcje SQL. Niestety, jeśli jest to baza wbudowana tj. HSQL 1.8.x, to operacje na datach są w niej mocno okrojone. W przypadku prawdziwej bazy spełniającej SQL-owe standardy, rzecz się prawie-że przenosi: potrzebujesz pobierania fragmentu tekstu (SUBSTR), konwersji str->DATE (date(tekst) i odejmowania dat.
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Pesel - obliczenia
Metoda kontroli numeru PESEL sprowadza się do obliczenia wyrażeniaJan_J pisze:wartość PESEL winna być tekstem z kontrolą poprawności -- bo forma, a nie wartość, jest istotna.
a+3b+7c+9d+e+3f+7g+9h+i+3j+k
(gdzie litery oznaczają kolejne cyfry numeru), a następnie sprawdzenia czy reszta z dzielenia przez 10 jest zerem. Jeśli ostatnia cyfra otrzymanej liczby jest zerem, to numer PESEL jest poprawny, w przeciwnym razie numer jest błędny.
Na podstawie Wikipedii
Re: Pesel - obliczenia
OK, miałem na myśli pożądaną niepodatność wartości PESEL na ustawianie formatu liczbowego użytkownika, jak początkowe zero, miejsca dziesiętne albo data. Tekst jest bezpieczniejszy. Także w przypadku SQL, choć tu pola do niezamierzonych nieporozumień jest mniej.
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)