Hi AJO experts,
I would like to see birthdate is equal to 59 years old and 60 and 65. How can I do it in Expression editor in AJO condition.
It is not working.
Please suggest.
Kind regards,
Vidhi
Views
Replies
Total Likes
Kindly use the following expression
Age -> {%= toInt((ageInMonths(toDateTimeOnly(profile.person.birthDate))/ 12)) %}
{%# if toInt((ageInMonths(toDateTimeOnly(profile.person.birthDate))/ 12)) = 59
or toInt((ageInMonths(toDateTimeOnly(profile.person.birthDate))/ 12)) = 60
or toInt((ageInMonths(toDateTimeOnly(profile.person.birthDate))/ 12)) = 65 %}
Display Relevant Content
{%else%}
Fallback
{%/if%}
Views
Replies
Total Likes
@VidhiKh1 try this
(
yearsBetween(now(), profile.person.birthDate) == 59
||
yearsBetween(now(), profile.person.birthDate) == 60
||
yearsBetween(now(), profile.person.birthDate) == 65
)
Views
Replies
Total Likes
Hi these solutions are not working in expression editor: I get error that it is invalid.
Views
Replies
Total Likes
Previous example I shared was with respect to personalization editor. You can adapt your condition by looking at the example mentioned here https://experienceleaguecommunities.adobe.com/t5/journey-optimizer-questions/getting-age-field/m-p/6...
(
(
(toInteger(substr(toString(now()),0,4))) -
(toInteger(substr(toString(#{ExperiencePlatform.ProfileFieldGroup.profile.person.birthDate}),0,4)))
) == 59
)
or
(
(
(toInteger(substr(toString(now()),0,4))) -
(toInteger(substr(toString(#{ExperiencePlatform.ProfileFieldGroup.profile.person.birthDate}),0,4)))
) == 60
)
or
(
(
(toInteger(substr(toString(now()),0,4))) -
(toInteger(substr(toString(#{ExperiencePlatform.ProfileFieldGroup.profile.person.birthDate}),0,4)))
) == 65
)
Views
Replies
Total Likes
@VidhiKh1 In the advanced expression editor you can compare age in years directly with the age()
helper, then combine the three values with OR logic:
(age(#{ExperiencePlatform.ProfileFieldGroup.profile.person.birthDate}) = 59
or age(#{ExperiencePlatform.ProfileFieldGroup.profile.person.birthDate}) = 60
or age(#{ExperiencePlatform.ProfileFieldGroup.profile.person.birthDate}) = 65)
• age(date)
returns the number of whole years between now and the date you pass (it already handles leap years for you).
• The =
operator checks for equality, and the or
operator lets any of the three comparisons pass.If you prefer a more compact form you can use the in()
collection operator:
in([59,60,65], age(#{ExperiencePlatform.ProfileFieldGroup.profile.person.birthDate}))
Views
Replies
Total Likes
@VidhiKh1 did you try the suggestions?
Views
Replies
Total Likes
Hi,
Thank you for your inputs. Unfortunately, it didn't help and gave me the below error:
Kind regards,
Vidhi
Views
Replies
Total Likes
@VidhiKh1 Kindly use the expression I shared earlier as age function isn't available in advanced expression editor.
Views
Replies
Total Likes
Hi Mohan,
Apologies, yeap I will try it now and let you know by end of day if it is working.
Good thing editor isn't giving any errors
Kind regards,
Vidhi
Views
Replies
Total Likes
Also @Mohan_Dugganab : Would you know if I need to check for 59.5 years age then the same logic will work?
Kind regards,
Vidhi
Views
Replies
Total Likes
@VidhiKh1 By slightly tweaking the above logic as follows, yes
(
(
((toInteger(substr(toString(now()),0,4))) * 12 + (toInteger(substr(toString(now()),5,7))))
-
((toInteger(substr(toString(#{ExperiencePlatform.ProfileFieldGroup.profile.person.birthDate}),0,4))) * 12
+ (toInteger(substr(toString(#{ExperiencePlatform.ProfileFieldGroup.profile.person.birthDate}),5,7))))
) / 12 == 59
)
or
(
(
((toInteger(substr(toString(now()),0,4))) * 12 + (toInteger(substr(toString(now()),5,7))))
-
((toInteger(substr(toString(#{ExperiencePlatform.ProfileFieldGroup.profile.person.birthDate}),0,4))) * 12
+ (toInteger(substr(toString(#{ExperiencePlatform.ProfileFieldGroup.profile.person.birthDate}),5,7))))
) / 12 == 59.5
)
Views
Replies
Total Likes
Views
Likes
Replies