Prosta zagadka z matematyki z którą wiele osób ma problem.

Prosta zagadka z matematyki z którą wiele osób ma problem.

Zagadka 1.

Ile to jest: 8 : 4 ( 1 + 1 ) = ?       zobacz rozwiązanie

 

Zagadka 2.

Ile to jest: 6 : 2 ( 2 + 1 ) = ?       zobacz rozwiązanie

 

Zagadka 3.

Ile to jest: 60 : 1/4 + 20  = ?       zobacz rozwiązanie

<< wróć do wszystkich zagadek

It's only fair to share...Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

PostgreSQL. Jak obliczyć różnicę wyrażoną w latach, miesiącach i dniach, pomiędzy dwoma datami? Funkcje AGE() i DATE_PART().

Witam Was serdecznie w kolejnym wpisie dotyczący PostgerSQL-a. Dzisiaj zajmiemy się obliczaniem różnicy pomiędzy dwoma datami, wyrażoną w latach, miesiącach lub dniach. Tak naprawdę, żeby zrealizować nasz cel  skorzystamy tylko z dwóch funkcji:  AGE() i DATE_PART().

Pierwsza z nich, funkcja AGE(), zwróci nam różnicę pomiędzy dwoma datami. Funkcja ta zwróci nam wynik w postaci interwału czasowego np. 9 years 1 mons 2 days.

Możemy z niej skorzystać na dwa sposoby.

W pierwszym przypadku podajemy dwa argumenty, które są datami. Wtedy funkcja AGE() zwróci nam różnicę pomiędzy nimi. Dodatkowa zasada jest taka, żeby pierwsza data była tą "starszą" a druga "młodszą" (bliższą dacie dzisiejszej), bo inaczej otrzymamy wynik ujemny.

Składnia:

age(timestamp, timestamp)

Przykład:

SELECT  AGE( TIMESTAMP '2010-01-01' , TIMESTAMP '2000-12-31' )

Wynik:

9 years 1 day

W drugim przypadku podajemy jeden argument, który także jest datą. Wtedy funkcja AGE() zwróci nam różnicę między podaną datą a datą dzisiejszą.

Składnia:

age(timestamp)

Przykład:

SELECT    AGE( TIMESTAMP '2010-01-01' ) 

Wynik:

11 years 6 mons 17 days  <- bo zapytanie wykonałem 18 lipca 2021

 

OK. Korzystać z funkcji AGE() już potrafimy.

Teraz weźmy się za funkcję DATE_PART(). Funkcja ta "wyciągnie" nam interesującą część daty z daty w postaci "timestamp", np. rok, miesiąc, dzień lub z Interwału.

Z tej funkcji także możemy skorzystać na dwa sposoby.

W pierwszym sposobie podajemy dwa argumenty: text i timestamp a w drugiem: text i interval.

No to przykład dotyczący pierwszego sposobu, czyli podajemy dwa parametry: text i datę w formacie timestamp.

Składnia:

date_part(text, timestamp)

Przykład:

SELECT DATE_PART( 'year' , TIMESTAMP'2000-01-01' )

Wynik:

2000

oczywiście w miejsce 'year' możemy podać np. 'month' lub 'day' i wtedy otrzymamy interesującą nas część daty.

Drugi sposób to podanie dwóch argumentów: części daty która nas interesuje i interwału czasowego.

Składnia:

date_part(text, interval)

Przykład:

SELECT DATE_PART( 'year' , interval '10 years 4 month 19 days' )

Wynik:

10

Skoro jako drugi argument funkcji DATE_PART() możemy podać interwał czasowy to możemy skorzystać z funkcji AGE() która zwraca nam właśnie taki typ.

Składnia:

date_part(text, AGE())

Przykład:

SELECT DATE_PART( 'year' , AGE( '2020-06-10' , '2008-01-24' ) )

Wynik:

12

Mamy już pełną wiedzę na temat wykorzystania funkcji AGE() i DATE_PART(). Ale chciałem Ci jeszcze zwrócić uwagę na pewiem mały szkopół.

Może posłużmy się przykładem. Wykonaj coś takiego.

Przykład:

SELECT
    DATE_PART( 'year' , AGE( '2020-06-10' , '2008-01-24' ) ),
    DATE_PART( 'year' , AGE( '2020-06-10' , '2008-12-24' ) )

Wynik:

12 , 11

Patrząc na wyniki pojawia się pytanie. Dlaczego mamy inne wyniki w latach (bo pierwszy argument DATE_PART to 'year') skoro w obu wierszach mamy te same daty jeśli chodzi o rok? No to zernijmy na miesiące w obu wierszach. Pierwsza data jest identyczna w obu wierszach i jest nią 10 czerwiec 2020 roku. Natomiast druga data w pierwszym wierszy to 24 styczeń 2008 a w drugim wierszu 24 grudzień 2008. Czyli w pierwszym wierszu styczeń jest przed czerwcem a w drugim wierszu grudzień jest za czerwcem i dlatego funkcja AGE() zwraca inny interwał czasowy. Dla pierwszego wiersza będzie to: "12 years 4 mons 17 days" i dlatego wynikiem działania funkcji DATE_PART jest liczba 12, a w drugiem wierszu funkcja AGE() zwraca: "11 years 5 mons 17 days" dlatego DATE_PART zwróci nam: 11.

Także na poczatku musimy się zastanowić co tak naprawdę nas interesuje. Czy chcemy np. obliczyć różnicę w latach, ale pełnych latach? Czy jeśli rok "nie będzie pełny" to chcemy uzyskać liczbę o jedną mniej niż wynikałoby to lat zapisanych w datach.

Także zwródźcie na to uwagę i miłego programowania.

Dzięki za przeczytanie niniejszego wpisu. Serdecznie zapraszam na kolejne z tej serii.

It's only fair to share...Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

Excel przydatne skróty.

W niniejszym wpisie będziemy umieszczać (i uzupełniać) przydatne skróty klawiszowe w programie MS Excel.

Zaznaczanie wartości w kolumnach

Ctrl + Spacja jeśli aktywna komórka znajduje się w środku kolumny
Ctrl + Shift + strzałka w dół jeśli jesteśmy w pierwszej komórce kolumny)

Zaznaczanie obszarów

Ctrl + strzałka (dowolny kierunek) powiększa zaznaczony obszar o 1 komórke we wskazanym kierunku (strzałka)
Ctrl + Shift + strzałki powiększa zaznaczenie do końca wiersza lub kolumny
Ctrl + Shift + End zaznacza wszystko do ostatniej komórki z danymi
Ctrl + Shift + Home zaznacza wszystko do komórki A1
Ctrl + A zaznacza cały arkusz
Ctrl + Shift + 8 zaznacza całą tabelę jeśli jesteś w środku jakiejś tabeli
Shift + spacja zaznacza cały wiersz w którym aktualnie jesteś bez względu w ilu kolumnach są dane
Ctrl + spacja zaznacza całą kolumnę w której aktualnie jesteś bez względu w ilu polach są dane
It's only fair to share...Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

PostgreSQL. Jak korzystać z interwałów czasowych?

Często w zapytaniach SQL które tworzymy zachodzi potrzeba skorzystania z jakiegoś interwału czasowego a nie wskazywania konkretnych dat. Np. za każdym razem kiedy uruchomię zapytanie w styczniu, marciu czy czerwcu, chcę żeby zapytanie za każdym razem kiedy się uruchoim brało pod uwagę rok wstecz.

I tutaj z pomocą przychodzą interwały. Np. chcemy żeby zapytanie wyświetliło nam wszystkie zdarzenia (np. tabela "events") gdzie data utworzenia tego zdarzenia ("createion_date") była rok wstecz.

Możemy to zrobić np. tak:

 

SELECT *

FROM events

WHERE events.creation_date BETWEEN NOW() – INTERVAL '1 year' AND NOW()

 

Jak wynika z powyższego słówkiem "INTERVAL" określamy interwał czasowy który nas interesuje. W przykładzie jest 1 rok ale oczywiście możemy użyć także "month", "day" itd.

Widzisz, że w bardzo prosty sposob można swoje zapytania tworzyć w bardziej uniwersalny sposób.

It's only fair to share...Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

PostgreSQL. Jak zresetować hasło dla użytkownika Postgres? (reset password for user postgres)

Każdy kiedyś spotkał się z sytuacją kiedy zapomniał hasła czy to do jakiejś strony www, serwera czy aplikacji. Mi ostatnio przytrafiła się taka sytuacja i zapomniałem hasła do użytkownika Postgres do swojego mało używanego testowego serwera PostgreSQL-a. I już miałem zamiar wszystko zresetować kiedy pomyślałem, że jest to doskonała sytuacja żeby spróbować zresetować jakoś to hasło. Poszukałem chwilkę w sieci i od razu znalazłem ciekawy artykuł który przybliżył mi tą tematykę.  Efektem moich ćwiczeń jest poniższa procedura.

1. Znajdź lokalizację PostgreSQL-a na dysku. U mnie będzie to: C:\Program Files\PostgreSQL\13\data , ponieważ posiadam wersję 13. Wejdź do tej lokalizacji.
2. Znajdź plik pg_hba.conf i zrób jego kopię.
3. Otwórz plik pg_hba.conf w jakimś edytorze tekstów np. Notepad++
4. Zjedź na dół pliku i zmień wszystkie wartości w "kolumnie" METHOD z obecnie wpisanej na trust
5. Zapisz zmiany w pliku i zrestartuj PostgreSQL
    W polu "Wpisz tu wyszukiwane słowa" wpisz "Usługi" i wybierz opcję o tej nazwie z listy.
6. W oknie usługi znajdź usługę "postgresql…"
7. Kliknij w tą pozycję i po lewej stronie kliknij w opcję "Uruchom ponownie".
8. Teraz podaj "master password".
9. Kiedy system zapyta Cię o podanie hasła dla użytkownika "postgres" wciśnij po prostu enter. Powinieneś móc się zalogować pomimo braku hasła.
10. Teraz uruchom okno "Query editor" i zresetuj hasło poleceniem: ALTER USER postgres WITH PASSWORD 'twoje_nowe_hasło'
11. Wróć do lokalizacji z punktu 1 i przywróć stary plik pg_hba.conf i ponownie zrestartuj usługę "postgres…"
12. Teraz już możesz logować się jako użytkownik Postgres swoim nowo ustawionym hasłem.

 

It's only fair to share...Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn