DATEADD() does not add to Hours/Minutes/Seconds in Tableau - date

Found that I am unable to add hours, minutes or seconds to date in Tableau Desktop.
Tried :
DateADD('second', 1, #1970-01-01#) gives 1/1/1970 00:00:00 (expected : 1/1/1970 00:00:01)
DateADD('minute', 1, #1970-01-01#) gives 1/1/1970 00:00:00 (expected : 1/1/1970 00:01:00)
DateADD('hour', 1, #1970-01-01 00:00:00#) gives 1/1/1970 00:00:00 (expected :1/1/1970 01:00:00)
But adding date works as expected
DateADD('day', 1, #1970-01-01 00:00:00#) gives 1/2/1970 00:00:00
Since I am using epoch date in seconds, the time part is not correctly calculated. The date part is getting calculated correctly. No matter how many seconds/minutes/hours I add, only if there is a change in date part, the change is reflected.
Am I going wrong anywhere? How can I display the correct time?

I cannot see why it is not working in your case. It is working perfectly, in mine.
I added two calc fields one having 1 hour addition and another 20 minutes addition. See the result.
EDIT: I got the error in your viz. Instead of formatting the calculated field as date-time, just click the pill, select 'exact date' instead of 'day' (in your view it is clear you're showing day of calculated field instead of calculated field) click again and select discreet. And your problem should be solved.
You're doing this instead

Related

Tableau Function - Dates (Day)

I am looking for a tableau formula that would help me create a field that assigns what day number it is in the year. If I use format options the day number restarts every month in the year... I have also tried to create my own formula however it is counting all the days numerically however it does not restart the count after the year ends. I have provided the Formula below:
DATEDIFF('day',DATE('1900-01-01'), [Date: ReportDate]) + 1
I have tried changing the format of the date and I have tried creating a formula to count days and have failed at both :(
Try using : DATEPART('dayofyear', [date])
Assuming you are in a year filtered on 2022, try applying AVG()

Why is Date.getMinutes() returning 2 for the time 4:00 PM?

I'm creating a customized function that does some calculations for a given time.
When a time is entered in a cell, for example 4:00 PM, this is automatically converted into a date, in this case 12/30/1899 16:00:00 and when the function getTheMinutes() is called, it returns 2 instead of 0.
function getTheMinutes(dateTime){
return dateTime.getMinutes();
}
The behavior of the function is different if it's used for a most recent date like 5/1/2019 16:00:00.
I want the user to be able to just write a time in a cell then use the customized function in another cell. Please let me know your thoughts.
Now that you have indicated the time zone for your spreadsheet I can confirm what #RobG deduced almost a day ago, which is that Guatemala adjusted its difference relative to UTC. Something you have confirmed is treated as by two minutes with effect from October 5, 1918.
More specifically, the adjustment was of 2 minutes and 4 seconds and effective from 03:00 that day:
(Source IANA Version 2019b file northamerica.)
There have been very many such minor adjustments around the world over the years (even between towns in the same country) and adjustments continue, though usually of a whole hour – between 'standard' and Summer time. Sheets has very properly recognised that "normal arithmetic" 'does not work' across such a transition and while noon yesterday to noon today for example is normally, for any one specific location, a difference of 24 hours it is often 23 hours or 25 hours on the day that clocks go forward/back.
And the moral of the story is to beware of obliging Sheets to assume, for want of a specific date, that is has the index number 0 - i.e. is December 30, 1899.
I made some testing, and I found out that the formula is giving a wrong result any minute before 10/5/1918 0:03:00, from that DateTime on, the formula is working as expected.
Here is my sheet https://docs.google.com/spreadsheets/d/1psm8_GJYRczO53TILJCOzo0p4GpnS-ooiGWqOJrC8ZU/edit?usp=sharing
I would need to do a date validation in my customized formula to make it useful. I don't know why google sheets is choosing that date as default when just a time is typed in a cell, I think it should be improved.

Crystal Reports 2011 time -24 hours

I have created a report that pulls all the data from the previous day's production. The problem with that is our operations is two shifts and information from second shift is entered around 230 AM the next morning (ex. production was the 15th, but they didn't enter data until 16th at 230AM).
This is the formula that I used:
date({REJECTS.PROD_DATE})=dateadd('d',-1,currentdate).
I tried this formula with the same results: date({REJECTS.TIME_STAMP})=dateadd('h',-24,currentdatetime).
I have verified that REJECTS.TIME_STAMP is a datetime field.
Any help would be great,
Thanks
Trevor
Add this to your report's record-selection formula:
// timestamp should be new than 24 hours before the current date/time (calculated dynamically)
{REJECTS.TIME_STAMP} >= DateAdd("h", -24, CurrentDateTime)
// include other restrictions as necessary
AND ...
My approach would be:
Create a String parameter and give default values for 24 hours... in the required format (either half hour format or Hour format).
If you require check the link for parameters.
2 use below formula in Record Select Expert
{REJECTS.TIME_STAMP}>=Cdatetime(Cdate(dateadd('d',-1,currentdate)),Ctime({?tme})) and
{REJECTS.TIME_STAMP}<Cdatetime(CDate(dateadd('d',0,currentdate)),Ctime({?time})) and
Now when you run the report you will be prompted for time.. select the time and you query will be formed as required by you.

Creating Dynamic Date Column Headings in Cross Tab for Business Objects

BO Version: 12.1.0 on Infoview,
O/S: W7
I am creating a report in infoview, which is a cross-tab. I have departments on the row side and for the column I want to have all Saturday dates dynamically displayed, and this is dependent on the date prompt values I put in to the report when I run it.
So if I put in for the prompts Dec the 08th 2013 to Jan the 04th 2014 I should see 4 Saturday dates (14th/21st/28th/04th) along the column headers.
I started off using a variable and using the function relativedate, which gave me all the dates I wanted:
=RelativeDate(LastDayOfWeek([Query 1].[Episode End Date]);-1)
but because I used -1 to get the Saturday date it was giving me the Saturday before the earliest prompt date, so I was getting these dates instead:
(07th/14th/21st/28th/04th)
Is there a way I can get these dates but ignore the previous day (the 7th) before the start prompt date?
I want to have this dynamic so that if I put a date range in it shows me all the saturday dates within that range along the top of the report regardless of the date range period.
Andrew
The reason you're having trouble is that WebI (being ISO compliant) considers a week to run from Monday to Sunday, but your reporting week ends on Saturday.
So, I would approach it this way:
=RelativeDate(
LastDayOfWeek(
RelativeDate([Query 1].[Episode End Date];1)
)
;-1)
If we evaluate some dates with this logic, we'll see the desired result:
Testing 12/8 (Sunday):
Add one day = 12/9
Get Last Day Of Week = 12/15
Subtract one day = 12/14
Testing 12/12 (Thursday)
Add one day = 12/13
Get Last Day Of Week = 12/15
Subtract one day = 12/14
Testing 12/14 (Saturday)
Add one day = 12/15
Get Last Day Of Week = 12/15
Subtract one day = 12/14
I'm at home and don't have access to WebI right now, so I can't test this myself, but the logic should be sound.

Number of days between past date and current date in Google spreadsheet

I want to calculate the number of days passed between past date and a current date. My past date is in the format dd/mm/yyyy format. I have used below mentioned formulas but giving the proper output.
=DAYS360(A2,TODAY())
=MINUS(D2,TODAY())
In the above formula A2 = 4/12/2012 (dd/mm/yyyy) and I am not sure whether TODAY returns in dd/mm/yyyy format or not. I have tried using 123 button on the tool bar, but no luck.
The following seemed to work well for me:
=DATEDIF(B2, Today(), "D")
DAYS360 does not calculate what you want, i.e. the number of days passed between the two dates – see the end of this post for details.
MINUS() should work fine, just not how you tried but the other way round:
=MINUS(TODAY(),D2)
You may also use simple subtraction (-):
=TODAY()-D2
I made an updated copy of #DrCord’s sample spreadsheet to illustrate this.
Are you SURE you want DAYS360? That is a specialized function used in the
financial sector to simplify calculations for bonds. It assumes a 360 day
year, with 12 months of 30 days each. If you really want actual days, you'll
lose 6 days each year.
[source]
Since this is the top Google answer for this, and it was way easier than I expected, here is the simple answer. Just subtract date1 from date2.
If this is your spreadsheet dates
A B
1 10/11/2017 12/1/2017
=(B1)-(A1)
results in 51, which is the number of days between a past date and a current date in Google spreadsheet
As long as it is a date format Google Sheets recognizes, you can directly subtract them and it will be correct.
To do it for a current date, just use the =TODAY() function.
=TODAY()-A1
While today works great, you can't use a date directly in the formula, you should referencing a cell that contains a date.
=(12/1/2017)-(10/1/2017) results in 0.0009915716411, not 61.
I used your idea, and found the difference and then just divided by 365 days. Worked a treat.
=MINUS(F2,TODAY())/365
Then I shifted my cell properties to not display decimals.
If you are using the two formulas at the same time, it will not work...
Here is a simple spreadsheet with it working:
https://docs.google.com/spreadsheet/ccc?key=0AiOy0YDBXjt4dDJSQWg1Qlp6TEw5SzNqZENGOWgwbGc
If you are still getting problems I would need to know what type of erroneous result you are getting.
Today() returns a numeric integer value: Returns the current computer system date. The value is updated when your document recalculates. TODAY is a function without arguments.
The following worked for me. Kindly note that TODAY() must NOT be the first argument in the function otherwise it will not work.
=DATEDIF( W2, TODAY(), "d")
Today() does return value in DATE format.
Select your "Days left field" and paste this formula in the field
=DAYS360(today(),C2)
Go to Format > Number > More formats >Custom number format and select the number with no decimal numbers.
I tested, it works, at least in new version of Sheets, March 2015.