Miesięczne archiwum: Lipiec 2021

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.

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

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.

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.

 

Jak zadbać o baterię w telefonie?

W dzisiejszych czasach coraz więcej z nas używa smartfronów. Obniża się wiek, kiedy dzieci zaczynają mieć kontakt ze smartfonami, czyli używamy ich coraz wcześniej i używamy ich coraz dłużej. Dzisiaj smartfon to nie tylko aparat do dzwonienia i odbierania SMS-ów. To już "małe centrum zarządzania". Odbieramy już tam pocztę elektroniczną, używamy komunikatorów do kontaktu ze znajomymi, przeglądamy strony WWW itd. Coraz więcej funkcji wymusza na producentach coraz większe wyświetlacze, które znowu zużywają coraz więcej energii. Przez to producenci wkładają do smartfonów coraz większe baterie żebyśmy mogli coraz dłużej cieszyć sie naszym "domowym centrum rozrywki" 🙂 Ale czy my sami możemy coś zrobić żeby przedłużyć żywotność naszych baterii a co za tym idzie naszych smartfomów ?

Oczywiście że tak, poniżej opiszę kilka podstawowych rad których używanie zwróci się z nawiązką.

1. Nigdy nie rozładowuj baterii do "zera".

Każdy z Was pewnie przyzna mi w tym momencie rację. Ale czy niegdy nie zdarzyło się Wam dopuścić do takiej sytuacji? Pewnie u niektórych z Was odpowiedź niestety będzie twierdząca. Otóż nigdy nie dopuszczajcie do takiego zdarzenia. Taka sytuacja jest niedopuszczalna a w skranych sytuacjach może doprowadzić nawet do uszkodzenia baterii. Oczywiście postaje teraz pytanie. To w któym momencie najlepiej podłączyć go do prądu? To zależy od producenta i modelu. Niektórzy sugerują już przy 40% a inni przy 30%. Ja osobiście nie dopuszczałbym nigdy do sytuacji kiedy poziom spada poniżej 20%.

2. Wyładowałeś do "zera" nie uruchamiaj telefonu.

Jeśli już dopuściłeś do takiej sytuacji i rozładowałeś telefon do zera to nigdy, przenigdy nie próbuj włączać do ponownie. Pierwszą czynnością jest zawsze podłączenie smartfona do sieci i dopiero kiedy "wróci do niego życie", czyli nasza bateria trochę się naładuje, możemy włączyć go w celu dalszego użytkowania. Włączając go przy pustej baterii możesz ją trwale uszkodzić lub stracić dane.

3. Jak długo ładować baterię?

To oczywiście zależy od naszego smartfona. Nowsze urzadzenia są bowiem wyposażone w zabezpieczenia/układy, które dbają o to żeby nasza bateria się nie "przeładowała". Jeśli naładujemy w pełni telefon to oczywiście odpowiednie mechanizmy "odetną" zasilanie od baterii a jeżeli poziom naładowania spadnie poniżej ustalonego poziomu to nastąpi ponowne naładowanie baterii. Także producenci nowoczesnych smartfonów dbają o to żeby bateria cały czas była optymalnie naładowana. Natomiast, nawet tak na "chłopski" rozum, odradzałbym "trzymanie" telefonu godzinami na ładowarce.

4. Używaj oryginalnych akcesoriów w szczególności ładowarek.

Pamiętaj, że oryginalne ładowarki są specjalnie "skrojone" dla Twojego urządzenia. Każda taka ładowarka ma odpowiednio dobrane napięcie i natężenie prądu do Twojego telefonu. Ktoś zadał sobie trud żeby zbudować Twój telefon i specjalnie dla niego dodatkowe urządzenie. Używając zamienników lub urządzeń nie przeznaczonych do naszego telefonu narażasz swój sprzęt na trwałe uszkodzenia.

5. Zarządzaj i oszczędzaj.

Coraz mniej ludzi zwraca na to uwagę. Ale przecież nie musisz mieć cały czas ekran doświetlony na maksa, nie musisz mieć cały czas włączonej sieć WiFi lub funkcji Bluetooth, nie musisz mieć w tle uruchomionej aplikacji, która cały czas korzysta z GPS-u itd. Zacznij zwracać uwagę na to co i kiedy jest włączone. Jeśli nie korzystasz w danym momencie z jakiegoś urządzenia, funkcji czy aplikacji to ją po prostu wyłącz. Jeśli wejdzie Ci to w krew zobaczysz, że Twój smartfon Ci za to podziękuje i odwdzięczy dłuższą i bezawaryjną pracą.

6. Twoje urządzenie a stan spoczynku.

Jeżeli wiesz że za chwilkę odłożysz swoje urządzenie na dłuższy czas to Zadbaj o to żeby bateria w twoim urządzeniu miała odpowiednią wartość naładowanego akumulatora. Tutaj także są rozbieżności różnych producentów co do tej wartości ale ogólnie Przyjmijmy że bezpieczną wartością jest 40% naładowania baterii. Pamiętaj że przy stanie spoczynku moje urządzenie też czerpie prąd. Oczywiście ilości tego prądu są minimalne natomiast musisz mieć z tyłu głowy że nie możesz zostawiać swojego urządzenia z baterią na przykład 10% na cały dzień. W konsekwencji może to skutkować sytuacją gdzie próba wybudzenia telefonu nie będzie możliwa.