Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 194
  • Last Modified:

SQL Time Table

I have a time table. I am trying to show every record in 15 minute intervals.

SELECT TimeID, CAST(Minute AS smallint) as IntMin, CAST(Second AS smallint) as IntSec, StandardTime from dim_Time

Open in new window

0
RecipeDan
Asked:
RecipeDan
  • 3
  • 3
1 Solution
 
Phillip BurtonDirector, Practice Manager and Computing ConsultantCommented:
And what's the Problem?
0
 
RecipeDanAuthor Commented:
I have data that looks like this:

TimeID	Time	Hour	MilitaryHour	Minute	Second	AmPm	StandardTime
1	00:00:00	00	00	00	00	AM	12:00:00 AM
2	00:00:01	00	00	00	01	AM	12:00:01 AM
3	00:00:02	00	00	00	02	AM	12:00:02 AM
4	00:00:03	00	00	00	03	AM	12:00:03 AM
5	00:00:04	00	00	00	04	AM	12:00:04 AM

Open in new window


I want to show all records with 15 minute intervals. So the data looks like this:

12:00
12:15
12:30
12:45
1:00
1:15 etc..
0
 
PortletPaulCommented:
use the Minute field

below I have used [n] but you would use [minute]

with cte as (
          select 0 as n union all
          select 14 union all
          select 15 union all
          select 24 union all
          select 30 union all
          select 44 union all
          select 45
          )
select
*
from CTE
where n % 15 = 0


|  N |
|----|
|  0 |
| 15 |
| 30 |
| 45 |
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
RecipeDanAuthor Commented:
That works but is not what I am looking for. I have a time table that lists all the times in a day from 12:00 am to 11:59 pm. What I want is a list of times that end in 15 minute intervals.

12:00
12;15
12:30
12:45
1:00
1:15
1:30
1:45 etc..
0
 
PortletPaulCommented:
This is how I though you might use the % 15:

select [time] from dim_time where [minute] % 15 = 0;

select [StandardTime]  from dim_time where [minute] % 15 = 0;
0
 
RecipeDanAuthor Commented:
You are correct. I misunderstood you. Thank you for your assistance. For reference here is the code, I decided to use military time.

SELECT MilitaryHour + ':' + CASE WHEN vartime = '0' THEN '00' ELSE vartime END AS vartime
FROM
(
select distinct MilitaryHour, CAST(inttime as varchar) as vartime
from
(
select cast(minute as smallint) as inttime, MilitaryHour from dim_time
)
t1
where inttime % 15 = 0
)
t2
order by vartime

Open in new window

0
 
PortletPaulCommented:
I see.

thanks.

As this is a dimension table, does this imply there is substantial volume when you perform queries?

If this is true, and you have indexes on the string field called [minute]

Then you might be better off simply using an IN() like this:

SELECT
      MilitaryHour
FROM dim_time
WHERE [minute] IN ('00', '15', '30', '45')


sorry for the change of mind.
(Most dim tables I've used have used integers extensively, I had this in my mind. )
0

Featured Post

Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now