Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
ArtemElis
0 / 0 / 0
Регистрация: 13.01.2016
Сообщений: 16
1

Работа с датой: подсчет возраста с точностью до месяца и дня

03.03.2019, 12:34. Просмотров 1114. Ответов 6

Здравствуйте,

нужна помощь.

Как в Access можно посчитать возраст с точностью до месяца и дня?
Какую использоваться функцию?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2019, 12:34
Ответы с готовыми решениями:

Вводится номер месяца М и дня Д. Определить день недели с датой М и Д
Вводится номер месяца М и дня Д. Определить день недели с датой М и Д, считая, что год начинается...

Что делать, если значение сегодняшнего дня(месяца) меньше значения дня(месяца) введных пользователем?
#include <iostream> #include <ctime> using namespace std; int main() { time_t t =...

Работа с датой: конец дня в 8.0
Начала изучать 8.0. Делаю запрос по регистру накоплений. в условии прописываю Где Период МЕЖДУ...

Работа с датой: по введенной дате определить время года, номер декады месяца
написать программу установки и вывода даты, используя понятие класса. По введенной дате определить...

Работа с датой / временем, подсчет сколько дней или часов прошло
Подскажите пожалуйста, необходимо считать дни, часы и т.д. от определенной даты, до, допустим по...

6
ltv_1953
Эксперт MS Access
13303 / 6012 / 1201
Регистрация: 21.06.2012
Сообщений: 10,856
03.03.2019, 14:15 2
Цитата Сообщение от ArtemElis Посмотреть сообщение
Как в Access можно посчитать возраст с точностью до месяца и дня?
Т.е. сколько лет, месяцев, дней прошло с даты рождения? Нетривиальная задача, общая формула вряд ли будет, т.к. результат зависит от года и месяца рождения (месяцы - они разные по количеству дней, и года бывают високосные). Вам точно это нужно?
0
ArtemElis
0 / 0 / 0
Регистрация: 13.01.2016
Сообщений: 16
04.03.2019, 17:05  [ТС] 3
Да, девушке в школе задали, я вроде и в универе учусь, а с этим справиться не могу)
0
Leo_pard
206 / 12 / 7
Регистрация: 14.05.2015
Сообщений: 25
04.03.2019, 18:07 4
Когда-то делал расчет отработанных дней. Во вложении база, но она учитывает и первый и последний день работы.
0
Вложения
Тип файла: zip base_vozr.zip (11.9 Кб, 2 просмотров)
Eugene-LS
3877 / 2233 / 422
Регистрация: 05.10.2016
Сообщений: 6,209
04.03.2019, 21:56 5
Лучший ответ Сообщение было отмечено alvk как решение

Решение

Цитата Сообщение от ArtemElis Посмотреть сообщение
Да, девушке в школе задали, я вроде и в универе учусь, а с этим справиться не могу
Вот что то сочинилось усталыми мозгами, так что проверяйте пожалуйста ....
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Public Function AgeByBirthDay(bdDate As Variant, Optional forDate As Variant = Null) As String
'es 04.03.2019
'Возвращает возраст на текущую дату (или на конкретную дату) с точностью до месяца и дня (текстом)
' При ошибке вернёт текст с её номером ...
'--------------------------------------------------------------------------
'Аргументы:
'   bdDate      -  Дата Рождения
'   forDate     -  Дата на которую рассчитать (по умолчанию = сегодня)
'--------------------------------------------------------------------------
' ?AgeByBirthDay (#12/12/1476#)
' Вернёт: Лет: 542 Мес: 2 Дней: 20
'--------------------------------------------------------------------------
Dim dLastBDay As Date
Dim iYears%, iMonthes%, iDays%, i%
 
On Error GoTo AgeByBirthDayErr
 
'Проверяем аргументы
    If IsNull(forDate) Then forDate = Date
 
'Разница в годах между датой рождения и датой на которую
    iYears = DateDiff("yyyy", bdDate, forDate)
 
    dLastBDay = DateSerial(Year(forDate), Month(bdDate), Day(bdDate))
 
'Вычитается один год, если в этом году дня рождения еще не было
    If dLastBDay > forDate Then
        iYears = iYears - 1
    End If
    
    i = Year(bdDate) + iYears
    dLastBDay = DateSerial(i, Month(bdDate), Day(bdDate))
    'Debug.Print "LastBDay: " & dLastBDay
 
'Меяцев
    iMonthes = DateDiff("m", dLastBDay, forDate)
    If Day(bdDate) > Day(forDate) Then
        iMonthes = iMonthes - 1
    End If
 
'Дней
    dLastBDay = DateSerial(i, Month(bdDate) + iMonthes, Day(bdDate))
    iDays = DateDiff("d", dLastBDay, forDate)
 
'Результат:
    AgeByBirthDay = "Лет: " & iYears
    AgeByBirthDay = AgeByBirthDay & " Мес: " & iMonthes
    AgeByBirthDay = AgeByBirthDay & " Дней: " & iDays
    
AgeByBirthDayBye:
    Exit Function
 
AgeByBirthDayErr:
    AgeByBirthDay = "Err!:" & Err.Number
    'MsgBox "Error: " & Err.Number & vbCrLf & Err.Description & vbCrLf & _
        "in Function: AgeByBirthDay ", vbCritical, "Error in Application"
 
    Err.Clear
    Resume AgeByBirthDayBye
End Function
1
alvk
Эксперт MS Access
5799 / 3684 / 201
Регистрация: 12.08.2011
Сообщений: 9,702
07.03.2019, 11:36 6
Я поставлю и спасибо и лучший ответ, а ТС пусть пасётся на травке
0
Eugene-LS
3877 / 2233 / 422
Регистрация: 05.10.2016
Сообщений: 6,209
07.03.2019, 11:44 7
Цитата Сообщение от alvk Посмотреть сообщение
Я поставлю и спасибо и лучший ответ
Спасибо! - Приятно.
Что то я там наворотил, но вроде работает ... - и ладно.
...
Критика приветствуется.
0
07.03.2019, 11:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2019, 11:44

Определить номер месяца M и дня недели D по порядковому номеру дня в году
Вводится число T-порядковый день в году.Определить номер месяца M и дня недели D, соответствующих...

По заданному номеру дня месяца, определить и напечатать название следующего за ним дня
Нужно написать программу. На лекции не объяснили как. Хочу спросить у профи. По заданному ...

Дата следующего дня, последний день месяца и сколько дней осталось до конца месяца
написать программу которая вычисляет дату следующего дня определяет последний день месяца и сколько...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru