Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Date problem/bug

Hi everyone,

I have now experienced a problem with dates that I have never seen before... I get different date values in the load of my fact table, even though I use the Date() function, and it's the same source. It's also the same date format in this source, and there are only a few transactions that gets "another" date. I can point out that fact when selecting two different values (of the same date in my current selections:


current_selections.JPG.jpg

Here is my code:

Fact:

Load

    RecNo() As Recno,

    Date(MyDate, 'YYYY-MM-DD') As Bokföringsdatum,

    ... more fields ...

FROM MySource.qvd (qvd);

Calendar:

Load

    Date(ISODate, 'YYYY-MM-DD') As Bokföringsdatum,

    Year(ISODate) As MyYear,

    Month(ISODate) As MyMonth

FROM MyCalendar.qvd (qvd);

Of course I want only one value of my date 2014-01-31... As it is now, only one of these values matches to my Calendar table, and the transactions with the "wrong" date format, doesn't get Year or Month values...

I hope you can understand my problem, and hopes of any solution to this.


Best regards,

Filip

1 Solution

Accepted Solutions
simenkg
Specialist
Specialist

As Ashfaq indicates the problem could be that there is also a timestamp in Bokföringsdatum.

The Date()-function does not round the date, it just formats it. It is a Dual() that will contain both the text date and the date as a number. If that number is 41670,01 in one and 41670,03 in another, they will both have 2014-01-31 as their textual representation but will be two different "dates".

The solution is to round them both down to start of the day. This is done with Date(Floor(ISODate, 'YYYY-MM-DD')) As Bokföringsdatum

View solution in original post

6 Replies
ashfaq_haseeb
Champion III
Champion III

Hi,

Try like below

Fact:

Load

    RecNo() As Recno,

    Date(floor(MyDate), 'YYYY-MM-DD') As Bokföringsdatum,

    ... more fields ...

FROM MySource.qvd (qvd);

Calendar:

Load

    Date(floor(ISODate), 'YYYY-MM-DD') As Bokföringsdatum,

    Year(ISODate) As MyYear,

    Month(ISODate) As MyMonth

FROM MyCalendar.qvd (qvd);

simenkg
Specialist
Specialist

As Ashfaq indicates the problem could be that there is also a timestamp in Bokföringsdatum.

The Date()-function does not round the date, it just formats it. It is a Dual() that will contain both the text date and the date as a number. If that number is 41670,01 in one and 41670,03 in another, they will both have 2014-01-31 as their textual representation but will be two different "dates".

The solution is to round them both down to start of the day. This is done with Date(Floor(ISODate, 'YYYY-MM-DD')) As Bokföringsdatum

Not applicable
Author

Hi try to use

date# function for the same syntax

like

date(date#(filed,'data format'), 'Required format) 

its_anandrjs

Hi,

Try with

Fact:

Load

    RecNo() As Recno,

    Date(Date#(MyDate, 'YYYY-MM-DD'), 'YYYY-MM-DD') As Bokföringsdatum,

    ... more fields ...

FROM MySource.qvd (qvd);



and how you create your calendar let me know.

Regards

Anand


Anonymous
Not applicable
Author

Thanks a lot for the quick response. The Floor() function solves the my problem

Colin-Albert

This blog by Henric Cronström shows how to correctly format dates, and the difference  between the Date#() and Date() functions.

http://community.qlik.com/blogs/qlikviewdesignblog/2014/12/02/the-date-function