JavaRush /Курсы /All lectures for GE purposes /ფუნქციები თარიღთან მუშაობისთვის

ფუნქციები თარიღთან მუშაობისთვის

All lectures for GE purposes
1 уровень , 229 лекция
Открыта

3.1 ფუნქციების სია თარიღსა და დროსთან მუშაობისთვის

თარიღი და დრო არის მონაცემების ყველაზე გავრცელებული ტიპები, რომლებიც ინახება მონაცემთა ბაზებში. სწორედ ამიტომ, ფუნქციების სია, რომლებიც მათთან მუშაობისთვის გამოიყენება, ძალიან დიდია. ესენი ყველაზე პოპულარულია:

# ფუნქცია აღწერა
1 CURDATE() აბრუნებს მიმდინარე თარიღს
2 CURTIME() აბრუნებს მიმდინარე დროს
3 NOW(), LOCALTIME() აბრუნებს მიმდინარე თარიღსა და დროს
4 YEAR() აბრუნებს თარიღიდან წელს
5 MONTH() აბრუნებს თარიღიდან თვეს
6 DAY(), DAYOFMONTH() აბრუნებს თარიღიდან დღეს
7 HOUR() აბრუნებს მხოლოდ საათებს დროიდან
8 MINUTE() აბრუნებს წუთებს დროიდან
9 SECOND() აბრუნებს წამებს დროიდან
10 DAYNAME() აბრუნებს კვირის დღის სახელს: Monday, ...
11 MONTHNAME() აბრუნებს თვის სახელს: იანვარი, ...
12 WEEK() აბრუნებს კვირას თარიღიდან
13 WEEKDAY() აბრუნებს კვირის დღის ნომერს: ორშაბათი – 0, სამშაბათი – 1
14 WEEKOFYEAR() აბრუნებს კვირის ნომერს წელიწადში
15 DAYOFWEEK() აბრუნებს კვირის დღის სახელს
16 DAYOFYEAR() აბრუნებს წლის დღეს: 1-366
17 DATE() აბრუნებს მხოლოდ თარიღს ობიექტიდან „თარიღი და დრო“
18 ADDDATE() დღეების დამატება თარიღთან
19 SUBDATE() დღეების გამოკლება თარიღიდან
20 ADDTIME() დროის დამატება დროსთან
21 SUBTIME() დროის გამოკლება დროსგან

სპეციალურად დავაჯგუფე ფუნქციები პატარა ჯგუფებში, რომ უფრო ადვილად გაიგო, როგორ იმუშაო მათთან. ქვემოთ თითოეულ ჯგუფიდან ერთ ფუნქციას განვიხილავთ.

თარიღსა და დროსთან მუშაობისთვის სრული ფუნქციების სია შეგიძლია ნახო ბმულზე: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html

3.2 ფუნქციების გამოძახება

სხვათა შორის, თუ ამდენი ფუნქციის შესწავლას ვაპირებთ, ვფიქრობ, სასარგებლო იქნება აღვნიშნოთ, რომ SELECT ოპერატორის გამოყენება არ არის სავალდებულო FROM სთან ერთად. ის შეიძლება დააბრუნოს ნებისმიერი გამოსახულების მნიშვნელობა. მისი საერთო სტრუქტურა გამოიყურება შემდეგნაირად:


SELECT გამოსახულება 
        

თუ ფუნქციის გამოძახება გსურს, უნდა დაწერო კოდი შემდეგნაირად:


SELECT ფუნქცია(პარამეტრები)  
        

ქვემოთ რამდენიმე მაგალითი მოვიყვანე SELECT ოპერატორის მუშაობის გარეშე ცხრილების მიმართ:

# მოთხოვნა შედეგი
1 SELECT 1+1 2
2 SELECT 13 MOD 5 3
3 SELECT RAND() 0.20771444235715497
4 SELECT CURDATE() 2022-06-04
5 SELECT CURTIME() 00:06:02
6 SELECT NOW() 2022-06-04 00:06:43

როგორც ხედავ, ზედა ცხრილში, რომ მიიღო მიმდინარე თარიღი და დრო, საჭიროა მხოლოდ გამოიყენო ერთი ამ ფუნქციებიდან:

  • CURDATE() – მიმდინარე თარიღი;
  • CURTIME() – მიმდინარე დრო;
  • NOW() – მიმდინარე თარიღი და დრო.

3.3 მონაცემების დაჯგუფება წლისა და თვის მიხედვით

მოდი გავიხსენოთ ჩვენი ცხრილი task თანამშრომლებისთვის დავალებებთან. ვცადოთ დავალებების დაჯგუფება ამ ცხრილიდან წლის მიხედვით. ამისთვის გამოვიყენებთ YEAR() ფუნქციას, რომელიც აბრუნებს წელიწადს გადმოცემული თარიღიდან.

ჩვენი მოთხოვნის პირველი ვერსია ასეთი იქნება:


SELECT 
    id,  
    employee_id ,  
    name,  
    YEAR(deadline) AS year,  
    deadline  
FROM task 
        

ამ მოთხოვნის შედეგი ასეთია:

id employee_id name year deadline
1 1 ჩაასწორე ბაგი ფრონტენდში 2022 2022-06-01
2 2 ჩაასწორე ბაგი ბექენდში 2022 2022-06-15
3 5 შეიძინე ყავა 2022 2022-07-01
4 5 შეიძინე ყავა 2022 2022-08-01
5 5 შეიძინე ყავა 2022 2022-09-01
6 (NULL) იმოქმედე ოფისი (NULL) (NULL)
7 4 ისიამოვნე ცხოვრებით (NULL) (NULL)
8 6 ისიამოვნე ცხოვრებით (NULL) (NULL)

ვხედავთ, რომ ყველა სტრიქონში ერთი და იგივე წელიწადია, ამიტომ მოდი ორ ველს გამოვიყენებთ – წელსა და თვეს. ჩვენი მოთხოვნის მეორე ვერსია ასეთი იქნება:


SELECT 
    id,  
    employee_id ,  
    name,  
    YEAR(deadline) AS year,
    MONTH(deadline) AS month,  
    deadline  
FROM task 
        

ამ მოთხოვნის შედეგი ასეთია:

id employee_id name year month deadline
1 1 ჩაასწორე ბაგი ფრონტენდში 2022 6 2022-06-01
2 2 ჩაასწორე ბაგი ბექენდში 2022 6 2022-06-15
3 5 შეიძინე ყავა 2022 7 2022-07-01
4 5 შეიძინე ყავა 2022 8 2022-08-01
5 5 შეიძინე ყავა 2022 9 2022-09-01
6 (NULL) იმოქმედე ოფისი (NULL) (NULL) (NULL)
7 4 ისიამოვნე ცხოვრებით (NULL) (NULL) (NULL)
8 6 ისიამოვნე ცხოვრებით (NULL) (NULL) (NULL)

როგორ დავაჯგუფოთ დავალებები წლისა და თვის მიხედვით პირადად არ მოგეხმარები – ეს უკვე ისწავლლე: გამოიყენე GROUP BY ოპერატორი.

Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ