Commit 9a46dc02 authored by lpsolit%gmail.com's avatar lpsolit%gmail.com

Bug 291209: Allow Relative Date Searches by Hour - Patch by Justin "Callek" Wood…

Bug 291209: Allow Relative Date Searches by Hour - Patch by Justin "Callek" Wood <bugspam.Callek@gmail.com> r=joel a=justdave
parent df8ee685
...@@ -1409,7 +1409,7 @@ sub SqlifyDate { ...@@ -1409,7 +1409,7 @@ sub SqlifyDate {
} }
if ($str =~ /^(-|\+)?(\d+)([dDwWmMyY])$/) { # relative date if ($str =~ /^(-|\+)?(\d+)([hHdDwWmMyY])$/) { # relative date
my ($sign, $amount, $unit, $date) = ($1, $2, lc $3, time); my ($sign, $amount, $unit, $date) = ($1, $2, lc $3, time);
my ($sec, $min, $hour, $mday, $month, $year, $wday) = localtime($date); my ($sec, $min, $hour, $mday, $month, $year, $wday) = localtime($date);
if ($sign eq '+') { $amount = -$amount; } if ($sign eq '+') { $amount = -$amount; }
...@@ -1429,6 +1429,15 @@ sub SqlifyDate { ...@@ -1429,6 +1429,15 @@ sub SqlifyDate {
while ($month<0) { $year--; $month += 12; } while ($month<0) { $year--; $month += 12; }
return sprintf("%4d-%02d-01 00:00:00", $year+1900, $month+1); return sprintf("%4d-%02d-01 00:00:00", $year+1900, $month+1);
} }
elsif ($unit eq 'h') {
# Special case 0h for 'beginning of this hour'
if ($amount == 0) {
$date -= $sec + 60*$min;
} else {
$date -= 3600*$amount;
}
return time2str("%Y-%m-%d %H:%M:%S", $date);
}
return undef; # should not happen due to regexp at top return undef; # should not happen due to regexp at top
} }
my $date = str2time($str); my $date = str2time($str);
......
...@@ -92,15 +92,17 @@ ...@@ -92,15 +92,17 @@
{ id => "chfieldfrom", { id => "chfieldfrom",
html => "Specify the start and end dates either in YYYY-MM-DD format<br> html => "Specify the start and end dates either in YYYY-MM-DD format<br>
(optionally followed by HH:mm, in 24 hour clock), or in relative<br> (optionally followed by HH:mm, in 24 hour clock), or in relative<br>
dates such as 1d, 2w, 3m, 4y, which respectively mean one day,<br> dates such as 1h, 2d, 3w, 4m, 5y, which respectively mean one hour,<br>
two weeks, three months, or four years ago. 0d is last midnight,<br> one day, two weeks, three months, or four years ago. 0d is last<br>
and 0w, 0m, 0y is the beginning of this week, month, or year." }, midnight, and 0h, 0w, 0m, 0y is the beginning of this hour, week,<br>
month, or year." },
{ id => "chfieldto", { id => "chfieldto",
html => "Specify the start and end dates either in YYYY-MM-DD format<br> html => "Specify the start and end dates either in YYYY-MM-DD format<br>
(optionally followed by HH:mm, in 24 hour clock), or in relative<br> (optionally followed by HH:mm, in 24 hour clock), or in relative<br>
dates such as 1d, 2w, 3m, 4y, which respectively mean one day,<br> dates such as 1h, 2d, 3w, 4m, 5y, which respectively mean one hour,<br>
two weeks, three months, or four years ago. 0d is last midnight,<br> one day, two weeks, three months, or four years ago. 0d is last<br>
and 0w, 0m, 0y is the beginning of this week, month, or year." }, midnight, and 0h, 0w, 0m, 0y is the beginning of this hour, week,<br>
month, or year." },
{ id => "chfieldvalue", { id => "chfieldvalue",
html => "The value the field defined above changed to during that time." }, html => "The value the field defined above changed to during that time." },
] %] ] %]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment