Been trying to change a native SAS datetime value to an oracle one-
ie. 1788130680 converts to 29AUG2016:22:58:00
I had attempted to do this:
to_date('01/01/1960','DD/MM/YYYY')+ 1788130680
but no dice. Suggestions appreciated.
Thank you.
It looks like you have a number of seconds since January 1st, 1960. You can turn it to a date as follows:
date '1960-01-01' + 1788130680 / 60 / 60 / 24
The idea is to conver the number to days (by dividing it by the number of seconds there is in a day), and then add it to the starting date.
It might be easier to understand by using an interval:
date '1960-01-01' + 1788130680 * interval '1' second
I have a column with data that looks like this
'1970-01-01 01:15:00.0000000'
(01(days):15(hours):00(minutes):0000000(seconds))
The date is irrelevant but I want to convert the time component to seconds. I want to output for this row to be be 140400.
If you really are abusing the datetime2 datatype, and using hours to store days, minutes to store hours, seconds to store minutes, and centiseconds to store seconds... You could do this...
DECLARE #YourDatetime datetime2(7) = '1970-01-01 01:15:00.0100000';
SELECT (DATEPART(HOUR,#YourDatetime) * 86400) +
(DATEPART(MINUTE,#YourDatetime) * 3600) +
(DATEPART(SECOND,#YourDatetime) * 60) +
(DATEPART(MILLISECOND, #YourDatetime) / 10)
But I strongly suggest you stop abusing the datetime2 data type. Hours should be hours, not days. Hopefully that's why you're trying to do what you're asking.
This, however, assumes you don't have any values with 24 or more hours, as a value like '1970-01-01 24:40:00.0100000' can't be stored in any Date and Time data type.
Looks like hour is days, minutes is hours, etc
Declare #d DATETIME2='1970-01-01 01:15:00.0000000'
Select (datepart(hour,#d)*3600*24)
+(datepart(minute,#d)*3600)
+(datepart(second,#d)*60)
Returns
140400
A reasonable interpretation of the question returns 90,900:
select datediff(second, '1969-12-31', '1970-01-01 01:15:00.0000000')
You can use datediff() to compute the number of seconds since your reference date:
datediff(s, '1970-01-01', #mydatetime)
I suspect that you actually want to start on January 1st, 1970, because that's epoch's starting point. If you really want one day before, then:
datediff(s, '1969-12-31', #mydatetime)
I need to know a difference between start time and end time. Both are DATETIME fields, I tried to use "-" and DATADIFF.
I already tried using DATADIFF and simple subtraction converting the field to just time.
(to_date(Fim_Hora,'HH24:MI') - to_date(Inicio_Hora,'HH24:MI')) AS Diferenca
DATADIFF(MIN,Fim_Hora,Inicio_Hora)
I need to know the time in minutes for use as parameters.
Oracle does not have a time data type. Usually, subtraction works well enough:
select (end_time - start_time) as diff
You may need to convert to a string if you want it formatted in a particular way.
In Oracle, you can directly substract dates, it returns the difference between the dates in days. To get the difference in minutes, you can multiply the result by 24 (hours per days) and 60 (minutes per hour):
(Fim_Hora - Inicio_Hora) * 24 * 60 diff_minutes
This assumes that both Fim_Hora and Inicio_Hora are of datatype DATE.
How to convert current time - 10 minutes to XMLGregorianCalendar in the format MM/dd/yyyy HH:mm:ss to a Webservice to fetch records from MDM based on the modified time?
SQL to subtract 30 mins from current time and output time should be military format 153010 only time part
In Oracle you can do this with:
SELECT TO_CHAR(SYSDATE - 1 / 24 / 2, 'HH24MISS') FROM DUAL
Adding 1 to a date would increase by a date, 1/24 by an hour, and 1/24/2 by 30 min.
Please note that SYSDATE will give you the time of the server which would normally by UTC. If you want the local time you have to CURRENT_DATE.