Unix Technical Forum

SEO

vBulletin Search Engine Optimization


Go Back   Unix Technical Forum > Database Server Software > MySQL > MySQL General forum

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-24-2008, 06:08 PM
David Perron
 
Posts: n/a
Default TO_DAYS Date Range Question

Hello Users-

I think I have an interesting question with regards to applying a function
to date range, I think half of problem solving is explaining it to an
audience so please, bear with me.
There is a table Orders that has two DATE columns, StartDate and EndDate.
The range of dates can vary from 1 week to years. My goal is to get a count
of days that each row in Orders spans over the current financial quarter.

Example rows and desired result:

OrderId = 1
StartDate '2008-01-01'
End Date '2008-06-01'

Days in Q2 = 61

OrderId = 2
StartDate '2008-03-01'
EndDate '2008-10-01'

Days in Q2 = 91

Etc.

I can use the TO_DAYS() function to get the absolute count of days
difference between Start & End, but is there any function that I could apply
to limit it to return the days between a range of dates.
Another solution I though of trying would be to use a CASE statement to look
at each order to see which "type" of span each Order
has (spans entire quarter,starts before the beginning of the quarter but
ends in the middle, starts in the middle ends after the end of the quarter,
etc.)
but this seemed like it might be overkill.

Thanks again for reading and if anyone has any ideas I would be very
appreciative.

David

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 04-24-2008, 06:08 PM
Sebastian Mendel
 
Posts: n/a
Default Re: TO_DAYS Date Range Question

David Perron schrieb:
> Hello Users-
>
> I think I have an interesting question with regards to applying a function
> to date range, I think half of problem solving is explaining it to an
> audience so please, bear with me.
> There is a table Orders that has two DATE columns, StartDate and EndDate.
> The range of dates can vary from 1 week to years. My goal is to get a count
> of days that each row in Orders spans over the current financial quarter.
>
> Example rows and desired result:
>
> OrderId = 1
> StartDate '2008-01-01'
> End Date '2008-06-01'
>
> Days in Q2 = 61
>
> OrderId = 2
> StartDate '2008-03-01'
> EndDate '2008-10-01'
>
> Days in Q2 = 91
>
> Etc.
>
> I can use the TO_DAYS() function to get the absolute count of days
> difference between Start & End, but is there any function that I could apply
> to limit it to return the days between a range of dates.


a snapshot:

MIN(TO_DAYS([date_end]), TO_DAYS([Q_end])) - MAX(TO_DAYS([Q_start]),
TO_DAYS([date_start]))

--
Sebastian Mendel
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3 (permalink)  
Old 04-29-2008, 08:26 PM
Sebastian Mendel
 
Posts: n/a
Default Re: TO_DAYS Date Range Question

David Perron schrieb:
> Hi Sebastian-
>
> Wanted to follow up on this. I figured out the problem. You actually
> have to use the LEAST & GREATEST operators when comparing multiple
> values, this statement works perfectly.
>
> LEAST(EndDays,Q2EndDays) - GREATEST(Q2StartDays,StartDays) as DaysInQ2,
>
> Thanks again for the tip! Have a great day.


oh, yes, for sure, sorry, my mistake! :-)

--
Sebastian Mendel
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 05:25 AM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145