Set the time default to 00:00:00 in DB2 - db2

I have a DateTime column (activation_dt) in DB2 table and I want to add 1 day to the date part and my output should be "date 00:00:00".
For example:
How it is - 5/9/2001 03:00:00
how it should be - 5/10/2001 00:00:00
I tried using Concat function but is not working. Date part I am doing as "date(activation_dt +1 day) as new_dt"
Please help how should I achieve this is DB2.

You could cast it to a DATE, then TIMESTAMP. Here is the invers, try out the individual parts.
values date(timestamp(current date))
BTW: What is CURRENT TIMEZONE?

Try this
VALUES date_trunc('DAY', CURRENT TIMESTAMP + 1 DAY)
it will always return the next day 00:00:00 - use activation_dt instead of current timestamp

Related

How to handle DD/MM date time string in Vertica TO_TIMESTAMPTZ?

I have some date time strings with day first. When I try to convert to TIMESTAMPTZ the month seems to be ignored.
Example
TO_TIMESTAMPTZ('01/07/2020 04:00', 'DD/MM/YYYY HH:MM')
Returns
2020-01-01T04:00:00.000+00:00
I'm looking for 1st July but get 1st January (not even 7th January!)
The pattern for minutes is MI, not MM (see documentation):
dbadmin=> select TO_TIMESTAMP_TZ('01/07/2020 04:00', 'DD/MM/YYYY HH:MI');
TO_TIMESTAMP_TZ
------------------------
2020-07-01 04:00:00+02

DB2: How do I pull the previous full months' data for a table.column?

I'm running into an issue with a DB2 query for a Crystal Report. What I need to do is to pull the previous full month's data for a column, even if the previous month is December of the previous year (as it would be in January, for example). For instance, I have this table named TABLE:
Name Date
John 11/01/2019
Dave 12/15/2019
Frank 01/02/2020
I would need something like
select DATE from TABLE where month(DATE) = month(x)
In this instance, x = the full previous month's data, which in this case, would be December 2019, so it should return"
Dave 12/15/2019"
What's the code to pull the previous full month's data, regardless of what the current month and year are? Of course it should be dynamic, so it will pull the previous full month's data regardless when the query is run.
Try this
select date from table
where date between last_day(current_date - 1 month) + 1 day - 1 month
and last_day(current_date - 1 month)
or if your version of db2 knows first_day
select date from table
where date between first_day(current_date - 1 month)
and last_day(current_date - 1 month)
I was actually able to pick apart the IBM documentation to use the DB2 version of DATEPART and DATEADD. Here's what I came up with:
WHERE (DATE_PART('MONTH', COLUMN_DATE) = DATE_PART('MONTH', CURRENT_DATE - 1 MONTH) AND
DATE_PART('YEAR', COLUMN_DATE) = DATE_PART('YEAR', CURRENT_DATE - 1 MONTH))
I hope this helps someone in the future.
You may use any date instead of current date to return the first and last days of month previous to this given date.
This works for any Db2 version.
SELECT
CURRENT DATE - DAY(CURRENT DATE) + 1 - 1 MONTH AS FIRST_DAY
, CURRENT DATE - DAY(CURRENT DATE) AS LAST_DAY
FROM SYSIBM.SYSDUMMY1;

time stamp are resetting to Zero when changed from to_date to to_char in postgresql

I need to change the following sql query to the postgres format. how can I do that?
eg:
round((TIME_TO_SEC(testruntest.endtime) - TIME_TO_SEC(testruntest.starttime))/60,2)
I tried this query and got error as "time_to_sec" is not a supported function...
Use the SQL standard EXTRACT function:
EXTRACT(epoch FROM testruntest.endtime)
The documentation describes:
For timestamp with time zone values, the number of seconds since 1970-01-01 00:00:00 UTC (can be negative); for date and timestamp values, the number of seconds since 1970-01-01 00:00:00 local time; for interval values, the total number of seconds in the interval

How do we extract the hour value in 24 hours format from a DateTime value with time stored as 12 hours format with AM and PM?

I have a column with where dateTime stamp is present. Want to extract the value of the hour in 24 hours format while the time value stored in the field is in 12 Hours format, in AM and PM.
Maybe, You use the function to_char and set the parameter yyyy-mm-dd hh24:mi:ss.
Check this query:
SELECT TO_CHAR(column_name, 'yyyy-mm-dd hh24:mi:ss') FROM table_name;

How to get a datetime variable with a value of 00-00 and month ago with a given timezone?

I am looking for help to accomplish following task in T-SQL:
I have a timezone, and I need to calculate an UTC datetime which is current date minus one month, but has 0 hours and 0 minutes in a given timezone.
Is this what you need?
Select Cast(Floor(Cast(DateAdd(month, -1, getutcdate()) as float)) as datetime)
SQL Server 2008 and later provides the datetimeoffset type that includes a timezone. You can change the timezone using the SWITCHOFFSET function to change timezone and the DATEADD function to add -1 month to the resulting value. Then you can convert to the DATE type to eliminate the time part.
select cast(DATEADD(month,-1,todatetimeoffset(GETUTCDATE(),'+02:00')) as DATE)