Solved

Query Date and Time in Different Columns

Posted on 2008-06-16
4
634 Views
Last Modified: 2008-06-16
I have a table that has a modified Julean date stored as a varchar in one column and a time value stored as a varchar in another column.  I would like to be able to query for all values that are between a start date/time and an end date/time.  For example if my start date is 108152 and start time is 175945 and my end date is 108155 and end time is 085500 then I would like all of the values inbetween.  Please provide me with an example where statement.
0
Comment
Question by:schlepuetz
  • 2
4 Comments
 
LVL 69

Accepted Solution

by:
Qlemo earned 125 total points
ID: 21795385
1. if your time and date values are right aligned, you can simply concatenate both to compare:

where juldate + ' ' + jultime between '108152 175945' and '108155 085500'

Otherwise, you will have to convert time and date to number, and compare those:

where convert(float, juldate) + convert(float, jultime)/240000 between ... and ...

I left some stuff to your imagination ;-)

BTW: Bad idea, storing date/time values in varchar ....
0
 
LVL 3

Author Comment

by:schlepuetz
ID: 21795460
I agree with the bad idea thing but that is the nature of the beast when dealing with other people's stuff.  Let me give your suggestions a whirl.
0
 
LVL 51

Expert Comment

by:Mark Wills
ID: 21795802
Time seems to be straight time - 24 hour clock...  So, try these... and convert either Julian to date or date to julian and compare time seperately....

-- JULIAN TO SQL SERVER
declare @date char(10)
set @date=108152
select dateadd(dd,@date-(@date/1000)*1000-1, convert(datetime,'01/01/'+ right(convert(varchar,@date/1000),2))) as Date_From_Julian

-- SQL SERVER DATE TO JULIAN
declare @date datetime
set @date=getdate()
select (100+year(@date)-2000)*1000+ datediff(d, convert(datetime,('01/01/'+convert(char(4),year(@date)))),@date)+1 as Date_To_Julian
 
-- TIME
declare @date datetime
set @date=getdate()
select replace(convert(varchar,@date,108),':','')   --or 114
0
 
LVL 3

Author Comment

by:schlepuetz
ID: 21796702
Here is final solution that I used.
cast([Date]as varchar(6)) + right('000000' + cast([Time]as varchar(6)),6)

I used the right to make sure that I had the same number for the times as some of ny times where not the full 6 characters.

Sorry mark wills I had tried before converting the date and time to normal date time values but the query was too slow.  The difference was 15 seconds versus 2 seconds.

Thanks Qlemo for the push in the right direction!
0

Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Need some help to cast ntext to nvarchar SQL 2000 7 37
MS SQL Server time between records 14 46
average of calculation (TSQL) 4 26
Comparison query - 4 columns 9 18
If you find yourself in this situation “I have used SELECT DISTINCT but I’m getting duplicates” then I'm sorry to say you are using the wrong SQL technique as it only does one thing which is: produces whole rows that are unique. If the results you a…
If you have heard of RFC822 date formats, they can be quite a challenge in SQL Server. RFC822 is an Internet standard format for email message headers, including all dates within those headers. The RFC822 protocols are available in detail at:   ht…
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…

766 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