Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Want to see what's currently in public preview? We've pulled it all together in one place. Check it out here
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Getting the year from a date variable

I have an input box containing a variable vStartDate. In the script I want to set another variable vStartYear which is just the year of vStartDate. However I'm having all kinds of trouble achieving what should be a really simple thing! In my script I have the following:

SET vStartYear = Year($(vStartDate));

But if I trace it, it seems to convert it to the string "Year(01/01/2007)". I have tried using the Date function but this also appears as a string. I have also tried various other things, the "best" I've managed is for it to be set to 1899. What am I doing wrong? It's driving me crazy!

Many thanks.

Paul

Labels (1)
9 Replies
Not applicable
Author

it would seem that the format in which your vStartDate variable is being typed into the input box is not being recognized by QV as a timestamp. For example this works correctly:

Set CurrentDate=Today(2);
Set CurrentYear=Year($(CurrentDate));

Not applicable
Author

Try this:

SET vStartYear = Year('$(=vStartDate)');


Dates can sometimes do funny things on the dollar sign expansion. You may not need an equals sign and the single quotes.

GabrielAraya
Employee
Employee

Try the following:

Let vStarYear = Year($(vStarDate))

gabriel

disqr_rm
Partner - Specialist III
Partner - Specialist III

Do you have to use SET? If not, try following. It eliminates all the confusions of dollar sige, etc.

LET vStartYear = Year(vStartDate);

Not applicable
Author

Thanks Rakesh, I didn't realise you could use LET and specify variables like that. I'm now getting 1899 as the answer, with my input box containing 01/01/2007. If I add the following line:

LET vStartDate1 = Date(vStartDate,'DD/MM/YYYY')

and reload in debug mode, I can see that vStartDate1 is 30/12/1899. So the problem does appear to be with the input box. How do I get that to recognise that it's a date?

prieper
Master II
Master II

Hi,

you need to change the variables, i.e. LET vStartDate = Date(Year(AnotherDateField), 'DD/MM/YYYY');
Currently you have determined the date-value of an empty variable, vStartDate.

Peter

disqr_rm
Partner - Specialist III
Partner - Specialist III

I don't understand. See enclosed. It's working fine for me. Can you attach a sample here?

Not applicable
Author

I think I've fixed it by going to Document Properties, Variables, setting the constraints of vStartDate to Custom and making the custom expression date#. In the debugger, vStartDate now displays as 01/01/07 and vStartYear as 2007. Thanks for putting me on the right track.

disqr_rm
Partner - Specialist III
Partner - Specialist III

Paul, thanks for your feedback. Glad that it's fixed now.