Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

how to find Date by a given hour in relative to current date time

Posted on 2011-03-22
6
229 Views
Last Modified: 2012-06-27
Hi Experts

this is a little bit complicated to me:

i get a hour (for example 22:00)
i should find the last date of this  hour
and the next date of this hour
and of course i have the getdate() to use it.

so actually i need 2 dates: previous date and next date

10x a lot
0
Comment
Question by:gudidi
  • 3
  • 2
6 Comments
 
LVL 18

Expert Comment

by:deighton
ID: 35190712
please give an example, it is not clear what you want to do.
0
 

Author Comment

by:gudidi
ID: 35190780
ok

i have from database the hour 22:00.

i need to calculate the datetime of last time that the hour was 22:00
and date time of next occurance of 22:00 hour.

for example:

if the time now is 18:00
the last  datetime of 22:00 was 21/03/2011
na dnext time is 22/03/2011
0
 
LVL 2

Accepted Solution

by:
CoolBurn28 earned 500 total points
ID: 35190955
hehehe nice
this would do the trick
select getdate() sysdate,DATEADD(hh, 22, getdate()) nxt_22,DATEADD(hh, -22, getdate()) prev_22

Open in new window

0
VMware Disaster Recovery and Data Protection

In this expert guide, you’ll learn about the components of a Modern Data Center. You will use cases for the value-added capabilities of Veeam®, including combining backup and replication for VMware disaster recovery and using replication for data center migration.

 

Author Comment

by:gudidi
ID: 35190997
10x so much
0
 
LVL 18

Expert Comment

by:deighton
ID: 35191109
DECLARE @HOUR as integer;
SET @HOUR = 20;
DECLARE @YEST as datetime;
DECLARE @TODAY as datetime;
DECLARE @TOMORROW as datetime;
DECLARE @BASE as datetime;
SET @BASE = CAST(FLOOR(CAST(getdate() AS FLOAT)) as datetime);
SET @YEST = dateadd(hour, @HOUR, dateadd(day,-1,@BASE));
SET @TODAY = dateadd(day, 1, @yest);
SET @TOMORROW=dateadd(day, 2, @yest);

SELECT CASE WHEN @TODAY <= getdate() THEN  @TODAY ELSE @YEST END AS LASTTIME,
	   CASE WHEN @TODAY >= getdate() THEN  @TODAY ELSE @TOMORROW END AS NEXTTIME

Open in new window

0
 
LVL 18

Expert Comment

by:deighton
ID: 35191133
the code you accepted gives the time 22 hours ago and 22 hours into the future, but it doesn't give you the time it was last 22 hours and the time it is next 22 hours

but if that is what you wanted so-be-it
0

Featured Post

NAS Cloud Backup Strategies

This article explains backup scenarios when using network storage. We review the so-called “3-2-1 strategy” and summarize the methods you can use to send NAS data to the cloud

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Occasionally there is a need to clean table columns, especially if you have inherited legacy data. There are obviously many ways to accomplish that, including elaborate UPDATE queries with anywhere from one to numerous REPLACE functions (even within…
The Delta outage: 650 cancelled flights, more than 1200 delayed flights, thousands of frustrated customers, tens of millions of dollars in damages – plus untold reputational damage to one of the world’s most trusted airlines. All due to a catastroph…
Familiarize people with the process of utilizing SQL Server functions from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Ac…
Viewers will learn how to use the INSERT statement to insert data into their tables. It will also introduce the NULL statement, to show them what happens when no value is giving for any given column.

860 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question