wolf47
@wolf47
Айтишник, немного програмирую на JS

Как вытащить из базы данных прошедшие годы?

У меня есть база данных моих животных, где я веду записи о рождаемости коров. Когда корова отелилась, дала приплод, она считается продуктивной. А если корова родила и у нее умер теленок, тогда она не продуктивная.

Из 100 коров у меня сейчас нормали отелились всего 70. Я веду записи уже 3 год, и хотел бы теперь сравнить мой прогресс. Для этого мне нужно вытащить из базы данных коров которым в 2019 году было старше 20 месяцев. А также суммировать их по продуктивности.

Сейчас я это научился делать. Просто filter.map.reduce.

Но, в фильтре я руками прописываю прошедший год из сводной таблицы.

Вопрос: каким образом вытащить из базы прошедшие года и вставить их для высчитывания возраста за прошлый год?

Например dateDiff(Дата рождение коровы, прошедший год) >=20 месяцев.

Как подставить прошедшие года?

Пример данных в виде таблицы
6005dbef3668d196322887.png

Пример массив объекта:

Это кусок массив объекта сделанный из таблицы выше. Мне нужно собрать все поля bdate в один и получить такой результат:
[2019, 2020,2021]

[ {
        "vid": 221,
        "gender": "Ұрғашы",
        "age": 4,
        "bdate": "2020-05-27T15:00:00-04:00",
        "type": "Ұрғашы бұзау",
        "owner": "Арсан",
        "mother": 49,
        "status": "Жоғалды",
        "govId": "",
        "tatoo": "",
        "brand": "",
        "color": "Қызыл-қасқа",
        "castrate": "",
        "animaltype": "Ірі қара",
        "currentSession": "",
        "statusChangeTime": "2020-10-19T04:27:05.000Z"
    },
    {
        "vid": 225,
        "gender": "Ұрғашы",
        "age": 6,
        "bdate": "2020-07-09T15:00:00-04:00",
        "type": "Ұрғашы бұзау",
        "owner": "Арсан",
        "mother": 43,
        "status": "",
        "govId": "",
        "tatoo": "",
        "brand": "",
        "color": "Қызыл-қасқа",
        "castrate": "",
        "animaltype": "Ірі қара",
        "currentSession": "",
        "statusChangeTime": ""
    },
    {
        "vid": -34,
        "gender": "Ұрғашы",
        "age": 7,
        "bdate": "2020-02-21T14:00:00-05:00",
        "type": "Ұрғашы бұзау",
        "owner": "Арсан",
        "mother": 34,
        "status": "Сатылды",
        "govId": -34,
        "tatoo": "",
        "brand": "",
        "color": "Қара-қасқа",
        "castrate": "",
        "animaltype": "Ірі қара",
        "currentSession": "",
        "statusChangeTime": "2020-10-17T05:17:55.000Z"
    },
    {
        "vid": -30,
        "gender": "Еркек",
        "age": 4,
        "bdate": "2019-01-03T14:00:00-05:00",
        "type": "Еркек бұзау",
        "owner": "Арсан",
        "mother": 30,
        "status": "Аборт",
        "govId": "",
        "tatoo": "",
        "brand": "",
        "color": "",
        "castrate": "",
        "animaltype": "Ірі қара",
        "currentSession": "",
        "statusChangeTime": "2019-05-06T07:24:00.000Z"
    }
]
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
oshliaer
@oshliaer
Google Products Expert
Не понятно, причем тут Таблицы?

Чтобы получить список годов из приведенного массива, можно сделать

[
  {
    vid: 221,
    age: 4,
    bdate: "2020-05-27T15:00:00-04:00",
    type: "Ұрғашы бұзау",
    statusChangeTime: "2020-10-19T04:27:05.000Z",
  },
  {
    vid: 225,
    age: 6,
    bdate: "2020-07-09T15:00:00-04:00",
    type: "Ұрғашы бұзау",
    statusChangeTime: "",
  },
  {
    vid: -34,
    age: 7,
    bdate: "2020-02-21T14:00:00-05:00",
    type: "Ұрғашы бұзау",
    statusChangeTime: "2020-10-17T05:17:55.000Z",
  },
  {
    vid: -30,
    age: 4,
    bdate: "2019-01-03T14:00:00-05:00",
    type: "Еркек бұзау",
    statusChangeTime: "2019-05-06T07:24:00.000Z",
  },
]
  .map((item) => +("" || item.bdate).split("-")[0])
  .filter((y, i, a) => a.indexOf(y) === i);


Выведет

> [2020, 2019]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы