rackerlabs/atom-hopper — pull request #266 by shintasmith (2014-03-10 22:04:14+00:00)
Title: B-37937: add capability to search by timestamp using 'startingAt' parameter

Add the handling of 'startingAt' parameter. The approach of this implementation is similar to the implementation of the 'marker' parameter, except this parameter has ISO date time format (without the milliseconds). The logic is to search for one specific entry that satisfies the condition (either startingAt > "some date time" or startingAt < "some date time" or marker = "some uuid") -- done in the getEntryByTimestamp() or getEntry() methods, then use that entry to build up pages around it (in the enhancedGetFeedPage() method).

The use of 'startingAt' and 'marker' parameters together is not allowed.

For those who are interested in the eventual SQL, the getEntryByTimestamp() method produces a query like this:
```
select * from entries where feed = 'servers/events' and (datelastupdated at time zone current_setting('TIMEZONE')) at time zone 'CST' < '2014-03-09 00:00:00 CST'::timestamp;
```

The phrase ```datelastupdated at time zone current_setting('TIMEZONE')``` is saying the time value in field ```datelastupdated``` is to have time zone that is from the Database's current settings.

The 2nd phrase ```at time zone 'CST'``` is to convert the database timezone to the timezone that is used by the app server.

Today, the DB timezone setting is *supposed to be* the same as app server timezone, but I don't want to assume that.

The conversion from the timezone that is used in the 'startingAt' parameter to the app server timezone is all done by the Joda Date Time API. For example, when I use: ```startingAt=2014-03-09T06:00:00Z``` which is a UTC timestamp, Joda Date Time will convert that to the timezone of the app server.