TransWikia.com

Как вычислить стаж работы (лет, месяцев, дней) в SQLite

Stack Overflow на русском Asked by 13_Voin on February 22, 2021

Можно ли сделать запрос чтобы вычислить стаж работы (лет, месяцев, дней)?

В таблице есть дата рождения, прием на работу и увольнение, у нескольких человек есть дата увольнения у других null.

К примеру если дата увольнения null то использовать (берется) текущую дату. Текущая дата – 09.02.2021

Пример таблицы SQLite

введите сюда описание изображения

В итоге он должен показать дaнные (пример):

1 строка – 5 лет 8 месяцев 27 дней

2 строка – 12 лет 10 месяцев 29 дней

3 строка – 6 лет 10 месяцев 19 дней

Возраст по дате рождения я разобрался как определить

SELECT last_name, first_name, third_name, data_r, strftime('%Y-%m-%d', 'now') - strftime('%Y-%m-%d', data_r) as vik FROM dovidnyk WHERE strftime('%d-%m', data_r) = strftime('%d-%m', 'now')    

One Answer

Используя ifnull и julianday:

select 
    last_name,
    first_name,
    third_name,
    data_p,
    data_z,
    alldays / 365 as years,
    alldays % 365 / 30 as month,
    alldays % 365 % 30 as days
from (select 
    last_name,
    first_name,
    third_name,
    data_p,
    data_z,
    CAst((julianday(ifnull(data_z, 'now')) - julianday(data_p)) as Integer) as alldays
from dovidnyk)as t;

Вывод:

last_name   first_name  third_name  data_p  data_z  years   months  days
family0 name0   father0 2013-03-12 00:00:00 2015-03-12 00:00:00 2   0   0
family1 name1   father1 2013-03-12 00:00:00 2015-04-12 00:00:00 2   1   1
family2 name2   father2 2010-03-12 00:00:00 null    10  11  9
family3 name3   father3 2017-03-12 00:00:00 2018-01-21 00:00:00 0   10  15
family4 name4   father4 2018-01-01 00:00:00 2018-12-31 00:00:00 0   12  4


Correct answer by TigerTV.ru on February 22, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP