significantly decrease duplication in tests
Arthur Axel 'fREW' Schmidt [Sat, 2 Apr 2011 15:02:01 +0000 (10:02 -0500)]
t/sqlmaker/op_dt.t

index fc3909d..9d85043 100644 (file)
@@ -191,38 +191,22 @@ my $date2 = $date->clone->set_day(16);
 my @tests = (
 
   {
+    msg => '-dt_now works',
     search => { 'me.created_on' => { -dt => $date } },
-    sqlite => {
-      select => 'me.starts_at, me.created_on, me.skip_inflation',
-      where  => 'me.created_on = ?',
-      bind   => [[{ dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12' ]],
-      hri    => [hri_thing('2010-12-12', '2010-12-14 12:12:12', '2019-12-12 12:12:12')],
-    },
+    select_sql => 'me.starts_at, me.created_on, me.skip_inflation',
+    where  => 'me.created_on = ?',
+    bind   => [[{ dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12' ]],
+    hri    => [hri_thing('2010-12-12', '2010-12-14 12:12:12', '2019-12-12 12:12:12')],
+    sqlite => { },
     mssql => {
-      select => 'me.starts_at, me.created_on, me.skip_inflation',
-      where  => 'me.created_on = ?',
       bind   => [[{ dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12.000' ]],
       hri    => [hri_thing('2010-12-12', '2010-12-14 12:12:12.000', '2019-12-12 12:12:12.000')],
     },
-    mysql => {
-      select => 'me.starts_at, me.created_on, me.skip_inflation',
-      where  => 'me.created_on = ?',
-      bind   => [[{ dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12' ]],
-      hri    => [hri_thing('2010-12-12', '2010-12-14 12:12:12', '2019-12-12 12:12:12')],
-    },
-    postgres => {
-      select => 'me.starts_at, me.created_on, me.skip_inflation',
-      where  => 'me.created_on = ?',
-      bind   => [[{ dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12' ]],
-      hri    => [hri_thing('2010-12-12', '2010-12-14 12:12:12', '2019-12-12 12:12:12')],
-    },
+    mysql => { },
+    postgres => { },
     oracle => {
-      select => 'me.starts_at, me.created_on, me.skip_inflation',
-      where  => 'me.created_on = ?',
-      bind   => [[{ dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12' ]],
       hri    => [hri_thing('2010-12-12 00:00:00', '2010-12-14 12:12:12.000000', '2019-12-12 12:12:12.000000')],
     },
-    msg => '-dt_now works',
   },
 
   {
@@ -230,35 +214,23 @@ my @tests = (
     search => { 'me.id' => 1 },
     select => [ [ -dt_year => { -ident => 'me.created_on' } ] ],
     as     => [ 'year' ],
+    where  => "me.id = ?",
+    bind   => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]],
+    hri    => [{ year => 2010 }],
     mssql => {
       select => "DATEPART(year, me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]],
-      hri    => [{ year => 2010 }],
     },
     mysql => {
       select => "EXTRACT(YEAR FROM me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]],
-      hri    => [{ year => 2010 }],
     },
     sqlite => {
       select => "STRFTIME('%Y', me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]],
-      hri    => [{ year => 2010 }],
     },
     postgres => {
       select => "date_part('year', me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]],
-      hri    => [{ year => 2010 }],
     },
     oracle => {
       select => "EXTRACT(year FROM me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]],
-      hri    => [{ year => 2010 }],
     },
   },
 
@@ -267,35 +239,24 @@ my @tests = (
     search => { 'me.id' => 1 },
     select => [ [ -dt_year => $date ] ],
     as     => [ 'year' ],
+    where  => "me.id = ?",
+    hri    => [{ year => 2010 }],
+    bind   => [[{ sqlt_datatype => 'timestamp' } => '2010-12-14 12:12:12' ], [{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]],
     mssql => {
       select => "DATEPART(year, ?)",
-      where => "me.id = ?",
       bind   => [[{ sqlt_datatype => 'timestamp' } => '2010-12-14 12:12:12.000' ], [{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]],
-      hri    => [{ year => 2010 }],
     },
     mysql => {
       select => "EXTRACT(YEAR FROM ?)",
-      where => "me.id = ?",
-      bind   => [[{ sqlt_datatype => 'timestamp' } => '2010-12-14 12:12:12' ], [{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]],
-      hri    => [{ year => 2010 }],
     },
     sqlite => {
       select => "STRFTIME('%Y', ?)",
-      where => "me.id = ?",
-      bind   => [[{ sqlt_datatype => 'timestamp' } => '2010-12-14 12:12:12' ], [{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]],
-      hri    => [{ year => 2010 }],
     },
     postgres => {
       select => "date_part('year', ?)",
-      where => "me.id = ?",
-      bind   => [[{ sqlt_datatype => 'timestamp' } => '2010-12-14 12:12:12' ], [{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]],
-      hri    => [{ year => 2010 }],
     },
     oracle => {
       select => "EXTRACT(year FROM ?)",
-      where => "me.id = ?",
-      bind   => [[{ sqlt_datatype => 'timestamp' } => '2010-12-14 12:12:12' ], [{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]],
-      hri    => [{ year => 2010 }],
     },
   },
 
@@ -304,365 +265,250 @@ my @tests = (
     search => { 'me.id' => 1 },
     select => [ [ -dt_get => [[qw(year month)], { -ident => 'me.created_on' }] ] ],
     as     => [ qw(year month) ],
+    where  => "me.id = ?",
+    bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
+    hri    => [{ year => 2010, month => 12 }],
     mssql => {
       select => "DATEPART(year, me.created_on), DATEPART(month, me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ year => 2010, month => 12 }],
     },
     mysql => {
       select => "EXTRACT(YEAR FROM me.created_on), EXTRACT(MONTH FROM me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]],
-      hri    => [{ year => 2010, month => 12 }],
     },
     sqlite => {
       select => "STRFTIME('%Y', me.created_on), STRFTIME('%m', me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ year => 2010, month => 12 }],
     },
     postgres => {
       select => "date_part('year', me.created_on), date_part('month', me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ year => 2010, month => 12 }],
     },
     oracle => {
       select => "EXTRACT(year FROM me.created_on), EXTRACT(month FROM me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ year => 2010, month => 12 }],
     },
   },
 
   {
     msg    => '-dt_month works',
     search => { 'me.id' => 1 },
-    select   => [ [ -dt_month => { -ident => 'me.created_on' } ] ],
-    as       => [ 'month' ],
+    select => [ [ -dt_month => { -ident => 'me.created_on' } ] ],
+    as     => [ 'month' ],
+    where  => "me.id = ?",
+    bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
+    hri    => [{ month => 12 }],
     sqlite => {
       select   => "STRFTIME('%m', me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ month => 12 }],
     },
     mssql => {
       select => "DATEPART(month, me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ month => 12 }],
     },
     mysql => {
       select => "EXTRACT(MONTH FROM me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]],
-      hri    => [{ month => 12 }],
     },
     postgres => {
       select => "date_part('month', me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ month => 12 }],
     },
     oracle => {
       select => "EXTRACT(month FROM me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ month => 12 }],
     },
   },
 
   {
     msg    => '-dt_day works',
     search => { 'me.id' => 1 },
-    select   => [ [ -dt_day => { -ident => 'me.created_on' } ] ],
-    as       => [ 'day' ],
+    select => [ [ -dt_day => { -ident => 'me.created_on' } ] ],
+    as     => [ 'day' ],
+    where  => "me.id = ?",
+    bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
+    hri    => [{ day => 14 }],
     sqlite => {
       select   => "STRFTIME('%d', me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ day => 14 }],
     },
     mssql => {
       select => "DATEPART(day, me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ day => 14 }],
     },
     mysql => {
       select => "EXTRACT(DAY FROM me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]],
-      hri    => [{ day => 14 }],
     },
     postgres => {
       select => "date_part('day', me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ day => 14 }],
     },
     oracle => {
       select => "EXTRACT(day FROM me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ day => 14 }],
     },
   },
 
   {
     msg    => '-dt_hour works',
     search => { 'me.id' => 1 },
-    select   => [ [ -dt_hour => { -ident => 'me.created_on' } ] ],
-    as       => [ 'hour' ],
+    select => [ [ -dt_hour => { -ident => 'me.created_on' } ] ],
+    as     => [ 'hour' ],
+    where  => "me.id = ?",
+    bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
+    hri    => [{ hour => 12 }],
     sqlite => {
       select   => "STRFTIME('%H', me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ hour => 12 }],
     },
     mssql => {
       select => "DATEPART(hour, me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ hour => 12 }],
     },
     mysql => {
       select => "EXTRACT(HOUR FROM me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]],
-      hri    => [{ hour => 12 }],
     },
     postgres => {
       select => "date_part('hour', me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ hour => 12 }],
     },
     oracle => {
       select => "EXTRACT(hour FROM me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ hour => 12 }],
     },
   },
 
   {
     msg    => '-dt_minute works',
     search => { 'me.id' => 1 },
-    select   => [ [ -dt_minute => { -ident => 'me.created_on' } ] ],
-    as       => [ 'minute' ],
+    select => [ [ -dt_minute => { -ident => 'me.created_on' } ] ],
+    as     => [ 'minute' ],
+    where  => "me.id = ?",
+    bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
+    hri    => [{ minute => 12 }],
     sqlite => {
       select   => "STRFTIME('%M', me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ minute => 12 }],
     },
     mssql => {
       select => "DATEPART(minute, me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ minute => 12 }],
     },
     mysql => {
       select => "EXTRACT(MINUTE FROM me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]],
-      hri    => [{ minute => 12 }],
     },
     postgres => {
       select => "date_part('minute', me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ minute => 12 }],
     },
     oracle => {
       select => "EXTRACT(minute FROM me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ minute => 12 }],
     },
   },
 
   {
     msg    => '-dt_second works',
     search => { 'me.id' => 1 },
-    select   => [ [ -dt_second => { -ident => 'me.created_on' } ] ],
-    as       => [ 'second' ],
+    select => [ [ -dt_second => { -ident => 'me.created_on' } ] ],
+    as     => [ 'second' ],
+    where  => "me.id = ?",
+    bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
+    hri    => [{ second => 12 }],
     sqlite => {
       select   => "STRFTIME('%S', me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ second => 12 }],
     },
     mssql => {
       select => "DATEPART(second, me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ second => 12 }],
     },
     mysql => {
       select => "EXTRACT(SECOND FROM me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]],
-      hri    => [{ second => 12 }],
     },
     postgres => {
       select => "date_part('second', me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ second => 12 }],
     },
     oracle => {
       select => "EXTRACT(second FROM me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]],
-      hri    => [{ second => 12 }],
     },
   },
 
   {
     msg    => '-dt_diff (second) works',
     search => { 'me.id' => 2 },
-    select   => [ [ -dt_diff => [second => { -ident => 'me.created_on' }, \'me.skip_inflation' ] ] ],
-    as => [ 'sec_diff' ],
+    select => [ [ -dt_diff => [second => { -ident => 'me.created_on' }, \'me.skip_inflation' ] ] ],
+    as     => [ 'sec_diff' ],
+    where  => "me.id = ?",
+    bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
+    hri    => [{ sec_diff => 2*24*60*60 }],
     sqlite => {
       select   => "(STRFTIME('%s', me.created_on) - STRFTIME('%s', me.skip_inflation))",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri => [{ sec_diff => 2*24*60*60 }],
     },
     mssql => {
       select   => "DATEDIFF(second, me.skip_inflation, me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri => [{ sec_diff => 2*24*60*60 }],
     },
     mysql => {
       select   => "TIMESTAMPDIFF(SECOND, me.skip_inflation, me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri => [{ sec_diff => 2*24*60*60 }],
     },
     postgres => {
       select   => "date_part('EPOCH', me.created_on) - date_part('EPOCH', me.skip_inflation)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri => [{ sec_diff => 2*24*60*60 }],
     },
     oracle => {
       select   => "TRUNC(MONTHS_BETWEEN(me.created_on, me.skip_inflation) * 31 * 24 * 60 * 60)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri => [{ sec_diff => 2*24*60*60 }],
     },
   },
 
   {
     msg    => '-dt_diff (day) works',
     search => { 'me.id' => 2 },
-    select   => [ [ -dt_diff => [day => { -ident => 'me.created_on' }, \'me.skip_inflation' ] ] ],
-    as => [ 'day_diff' ],
+    select => [ [ -dt_diff => [day => { -ident => 'me.created_on' }, \'me.skip_inflation' ] ] ],
+    as     => [ 'day_diff' ],
+    where  => "me.id = ?",
+    bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
+    hri    => [{ day_diff => 2 }],
     sqlite => {
       select   => "(JULIANDAY(me.created_on) - JULIANDAY(me.skip_inflation))",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri => [{ day_diff => 2 }],
     },
     mssql => {
       select   => "DATEDIFF(dayofyear, me.skip_inflation, me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri => [{ day_diff => 2 }],
     },
     mysql => {
       select   => "TIMESTAMPDIFF(DAY, me.skip_inflation, me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri => [{ day_diff => 2 }],
     },
     postgres => {
       select   => "date_part('DAY', me.created_on) - date_part('DAY', me.skip_inflation)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri => [{ day_diff => 2 }],
     },
     oracle => {
       select   => "TRUNC(MONTHS_BETWEEN(me.created_on, me.skip_inflation) * 31)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri => [{ day_diff => 2 }],
     },
   },
 
   {
-    msg => '-dt_diff (year) works',
+    msg    => '-dt_diff (year) works',
     search => { 'me.id' => 2 },
-    select   => [ [ -dt_diff => [year => \'me.starts_at', { -ident => 'me.created_on' } ] ] ],
-    as       => [ 'year' ],
+    select => [ [ -dt_diff => [year => \'me.starts_at', { -ident => 'me.created_on' } ] ] ],
+    as     => [ 'year' ],
+    where  => "me.id = ?",
+    bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
+    hri    => [{ year => -1 }],
     sqlite => {
       exception_like => qr/date diff not supported for part "year" with database "SQLite"/,
     },
     mssql => {
       select   => "DATEDIFF(year, me.created_on, me.starts_at)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ year => -1 }],
     },
     mysql => {
       select   => "TIMESTAMPDIFF(YEAR, me.created_on, me.starts_at)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri => [{ year => -1 }],
     },
     postgres => {
       select   => "date_part('YEAR', me.starts_at) - date_part('YEAR', me.created_on)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ year => -1 }],
     },
     oracle => {
       select   => "TRUNC(MONTHS_BETWEEN(me.starts_at, me.created_on) / 12)",
-      where => "me.id = ?",
-      bind   => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ year => -1 }],
     },
   },
 
   {
     msg    => '-dt_add (year) works',
     search => { 'me.id' => 2 },
-    select   => [ [ -dt_add => [year => 3, { -ident => 'me.created_on' } ] ] ],
-    as   => [ 'date' ],
+    select => [ [ -dt_add => [year => 3, { -ident => 'me.created_on' } ] ] ],
+    as     => [ 'date' ],
+    where  => "me.id = ?",
+    bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
+    hri    => [{ date => '2014-12-14 12:12:12' }],
     sqlite => {
       select => "(datetime(me.created_on, ? || ' years'))",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ date => '2014-12-14 12:12:12' }],
     },
     mssql => {
       select => "(DATEADD(year, CAST(? AS INTEGER), me.created_on))",
-      where => "me.id = ?",
       bind   => [[{sqlt_datatype => 'integer'}, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
       hri    => [{ date => '2014-12-14 12:12:12.000' }],
     },
     mysql => {
       select => "DATE_ADD(me.created_on, INTERVAL ? YEAR)",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ date => '2014-12-14 12:12:12' }],
     },
     postgres => {
       select => "(me.created_on + ? * interval '1 YEAR')",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ date => '2014-12-14 12:12:12' }],
-
     },
     oracle => {
       select => "(me.created_on + NUMTOYMINTERVAL(?, 'year'))",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
       hri    => [{ date => '2014-12-14 12:12:12.000000000' }],
     },
   },
@@ -670,37 +516,28 @@ my @tests = (
   {
     msg    => '-dt_add (month) works',
     search => { 'me.id' => 2 },
-    select   => [ [ -dt_add => [month => 3, { -ident => 'me.created_on' } ] ] ],
-    as   => [ 'date' ],
+    select => [ [ -dt_add => [month => 3, { -ident => 'me.created_on' } ] ] ],
+    as     => [ 'date' ],
+    where  => "me.id = ?",
+    bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
+    hri    => [{ date => '2012-03-14 12:12:12' }],
     sqlite => {
       select => "(datetime(me.created_on, ? || ' months'))",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ date => '2012-03-14 12:12:12' }],
     },
     mssql => {
       select => "(DATEADD(month, CAST(? AS INTEGER), me.created_on))",
-      where => "me.id = ?",
       bind   => [[{sqlt_datatype => 'integer'}, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
       hri    => [{ date => '2012-03-14 12:12:12.000' }],
     },
     postgres => {
       select => "(me.created_on + ? * interval '1 MONTH')",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ date => '2012-03-14 12:12:12' }],
     },
 
     mysql => {
       select => "DATE_ADD(me.created_on, INTERVAL ? MONTH)",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ date => '2012-03-14 12:12:12' }],
     },
     oracle => {
       select => "(me.created_on + NUMTOYMINTERVAL(?, 'month'))",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
       hri    => [{ date => '2012-03-14 12:12:12.000000000' }],
     },
   },
@@ -708,37 +545,27 @@ my @tests = (
   {
     msg    => '-dt_add (day) works',
     search => { 'me.id' => 2 },
-    select   => [ [ -dt_add => [day => 3, { -ident => 'me.created_on' } ] ] ],
-    as   => [ 'date' ],
+    select => [ [ -dt_add => [day => 3, { -ident => 'me.created_on' } ] ] ],
+    as     => [ 'date' ],
+    where  => "me.id = ?",
+    bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
+    hri    => [{ date => '2011-12-17 12:12:12' }],
     sqlite => {
       select => "(datetime(me.created_on, ? || ' days'))",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ date => '2011-12-17 12:12:12' }],
     },
     mssql => {
       select => "(DATEADD(dayofyear, CAST(? AS INTEGER), me.created_on))",
-      where => "me.id = ?",
       bind   => [[{sqlt_datatype => 'integer'}, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
       hri    => [{ date => '2011-12-17 12:12:12.000' }],
     },
     postgres => {
       select => "(me.created_on + ? * interval '1 DAY')",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ date => '2011-12-17 12:12:12' }],
     },
-
     mysql => {
       select => "DATE_ADD(me.created_on, INTERVAL ? DAY)",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ date => '2011-12-17 12:12:12' }],
     },
     oracle => {
       select => "(me.created_on + NUMTODSINTERVAL(?, 'day'))",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
       hri    => [{ date => '2011-12-17 12:12:12.000000000' }],
     },
   },
@@ -746,36 +573,27 @@ my @tests = (
   {
     msg    => '-dt_add (hour) works',
     search => { 'me.id' => 2 },
-    select   => [ [ -dt_add => [hour => 3, { -ident => 'me.created_on' } ] ] ],
-    as   => [ 'date' ],
+    select => [ [ -dt_add => [hour => 3, { -ident => 'me.created_on' } ] ] ],
+    as     => [ 'date' ],
+    where  => "me.id = ?",
+    bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
+    hri    => [{ date => '2011-12-14 15:12:12' }],
     sqlite => {
       select => "(datetime(me.created_on, ? || ' hours'))",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ date => '2011-12-14 15:12:12' }],
     },
     mssql => {
       select => "(DATEADD(hour, CAST(? AS INTEGER), me.created_on))",
-      where => "me.id = ?",
       bind   => [[{sqlt_datatype => 'integer'}, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
       hri    => [{ date => '2011-12-14 15:12:12.000' }],
     },
     postgres => {
       select => "(me.created_on + ? * interval '1 HOUR')",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ date => '2011-12-14 15:12:12' }],
     },
     mysql => {
       select => "DATE_ADD(me.created_on, INTERVAL ? HOUR)",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ date => '2011-12-14 15:12:12' }],
     },
     oracle => {
       select => "(me.created_on + NUMTODSINTERVAL(?, 'hour'))",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
       hri    => [{ date => '2011-12-14 15:12:12.000000000' }],
     },
   },
@@ -783,36 +601,27 @@ my @tests = (
   {
     msg    => '-dt_add (minute) works',
     search => { 'me.id' => 2 },
-    select   => [ [ -dt_add => [minute => 3, { -ident => 'me.created_on' } ] ] ],
-    as   => [ 'date' ],
+    select => [ [ -dt_add => [minute => 3, { -ident => 'me.created_on' } ] ] ],
+    as     => [ 'date' ],
+    where  => "me.id = ?",
+    bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
+    hri    => [{ date => '2011-12-14 12:15:12' }],
     sqlite => {
       select => "(datetime(me.created_on, ? || ' minutes'))",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ date => '2011-12-14 12:15:12' }],
     },
     mssql => {
       select => "(DATEADD(minute, CAST(? AS INTEGER), me.created_on))",
-      where => "me.id = ?",
       bind   => [[{sqlt_datatype => 'integer'}, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
       hri    => [{ date => '2011-12-14 12:15:12.000' }],
     },
     postgres => {
       select => "(me.created_on + ? * interval '1 MINUTE')",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ date => '2011-12-14 12:15:12' }],
     },
     mysql => {
       select => "DATE_ADD(me.created_on, INTERVAL ? MINUTE)",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ date => '2011-12-14 12:15:12' }],
     },
     oracle => {
       select => "(me.created_on + NUMTODSINTERVAL(?, 'minute'))",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
       hri    => [{ date => '2011-12-14 12:15:12.000000000' }],
     },
   },
@@ -820,36 +629,27 @@ my @tests = (
   {
     msg    => '-dt_add (second) works',
     search => { 'me.id' => 2 },
-    select   => [ [ -dt_add => [second => 3, { -ident => 'me.created_on' } ] ] ],
-    as   => [ 'date' ],
+    select => [ [ -dt_add => [second => 3, { -ident => 'me.created_on' } ] ] ],
+    as     => [ 'date' ],
+    where  => "me.id = ?",
+    bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
+    hri    => [{ date => '2011-12-14 12:12:15' }],
     sqlite => {
       select => "(datetime(me.created_on, ? || ' seconds'))",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ date => '2011-12-14 12:12:15' }],
     },
     mssql => {
       select => "(DATEADD(second, CAST(? AS INTEGER), me.created_on))",
-      where => "me.id = ?",
       bind   => [[{sqlt_datatype => 'integer'}, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
       hri    => [{ date => '2011-12-14 12:12:15.000' }],
     },
     postgres => {
       select => "(me.created_on + ? * interval '1 SECOND')",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ date => '2011-12-14 12:12:15' }],
     },
     mysql => {
       select => "DATE_ADD(me.created_on, INTERVAL ? SECOND)",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ date => '2011-12-14 12:12:15' }],
     },
     oracle => {
       select => "(me.created_on + NUMTODSINTERVAL(?, 'second'))",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
       hri    => [{ date => '2011-12-14 12:12:15.000000000' }],
     },
   },
@@ -857,185 +657,108 @@ my @tests = (
   {
     msg    => 'nested -dt_add works',
     search => { 'me.id' => 2 },
-    select   => [ [ -dt_add => [second => 3, { -dt_add => [ day => 1, { -ident => 'me.created_on' } ] } ] ] ],
-    as       => [ 'date' ],
+    select => [ [ -dt_add => [second => 3, { -dt_add => [ day => 1, { -ident => 'me.created_on' } ] } ] ] ],
+    as     => [ 'date' ],
+    where  => "me.id = ?",
+    hri    => [{ date => '2011-12-15 12:12:15' }],
+    bind   => [[unknown_col, 1], [unknown_col, 3 ], [{dbic_colname => 'me.id', sqlt_datatype => 'integer' }, 2]],
     sqlite => {
       select   => "(datetime((datetime(me.created_on, ? || ' days')), ? || ' seconds'))",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 1], [unknown_col, 3 ], [{dbic_colname => 'me.id', sqlt_datatype => 'integer' }, 2]],
-      hri    => [{ date => '2011-12-15 12:12:15' }],
     },
     mssql => {
       select => "(DATEADD(second, CAST(? AS INTEGER), (DATEADD(dayofyear, CAST(? AS INTEGER), me.created_on))))",
-      where => "me.id = ?",
       bind   => [[{sqlt_datatype => 'integer'}, 3 ], [{sqlt_datatype => 'integer'}, 1], [{dbic_colname => 'me.id', sqlt_datatype => 'integer' }, 2]],
       hri    => [{ date => '2011-12-15 12:12:15.000' }],
     },
      postgres => {
       select => "((me.created_on + ? * interval '1 DAY') + ? * interval '1 SECOND')",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 1], [unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ date => '2011-12-15 12:12:15' }],
     },
     mysql => {
       select => "DATE_ADD(DATE_ADD(me.created_on, INTERVAL ? DAY), INTERVAL ? SECOND)",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 1], [unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]],
-      hri    => [{ date => '2011-12-15 12:12:15' }],
     },
     oracle => {
       select => "((me.created_on + NUMTODSINTERVAL(?, 'day')) + NUMTODSINTERVAL(?, 'second'))",
-      where => "me.id = ?",
-      bind   => [[unknown_col, 1], [unknown_col, 3 ], [{dbic_colname => 'me.id', sqlt_datatype => 'integer' }, 2]],
       hri    => [{ date => '2011-12-15 12:12:15.000000000' }],
     },
   },
 
   {
-    msg    => '-dt_before works',
-    search => { 'me.created_on' => { -dt_before => '2011-12-14 12:12:12' } },
+    msg      => '-dt_before works',
+    search   => { 'me.created_on' => { -dt_before => '2011-12-14 12:12:12' } },
     select   => [ [ -ident => 'me.created_on' ] ],
     as       => [ 'date' ],
-    sqlite => {
-      select   => "me.created_on",
-      where => "me.created_on < ?",
-      bind   => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']],
-      hri    => [{ date => '2010-12-14 12:12:12' }],
-    },
-    postgres => {
-      select   => "me.created_on",
-      where => "me.created_on < ?",
-      bind   => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']],
-      hri    => [{ date => '2010-12-14 12:12:12' }],
-    },
-    mysql => {
-      select   => "me.created_on",
-      where => "me.created_on < ?",
-      bind   => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']],
-      hri    => [{ date => '2010-12-14 12:12:12' }],
-    },
-    mssql => {
-      select   => "me.created_on",
-      where => "me.created_on < ?",
-      bind   => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']],
-      hri    => [{ date => '2010-12-14 12:12:12' }],
-    },
-    oracle => {
-      select   => "me.created_on",
-      where => "me.created_on < ?",
-      bind   => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']],
-      hri    => [{ date => '2010-12-14 12:12:12' }],
+    select_sql   => "me.created_on",
+    where    => "me.created_on < ?",
+    bind     => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']],
+    hri      => [{ date => '2010-12-14 12:12:12' }],
+    sqlite   => { },
+    postgres => { },
+    mysql    => { },
+    mssql    => {
+      hri => [{ date => '2010-12-14 12:12:12.000' }],
+    },
+    oracle   => {
+      hri => [{ date => '2010-12-14 12:12:12.000000' }],
     },
   },
 
   {
-    msg    => '-dt_on_or_before works',
-    search => { 'me.created_on' => { -dt_on_or_before => '2011-12-14 12:12:12' } },
+    msg      => '-dt_on_or_before works',
+    search   => { 'me.created_on' => { -dt_on_or_before => '2011-12-14 12:12:12' } },
     select   => [ [ -ident => 'me.created_on' ] ],
     as       => [ 'date' ],
-    sqlite => {
-      select   => "me.created_on",
-      where => "me.created_on <= ?",
-      bind   => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']],
-      hri    => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }],
-    },
-    postgres => {
-      select   => "me.created_on",
-      where => "me.created_on <= ?",
-      bind   => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']],
-      hri    => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }],
-    },
-    mysql => {
-      select   => "me.created_on",
-      where => "me.created_on <= ?",
-      bind   => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']],
-      hri    => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }],
-    },
-    mssql => {
-      select   => "me.created_on",
-      where => "me.created_on <= ?",
-      bind   => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']],
-      hri    => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }],
-    },
-    oracle => {
-      select   => "me.created_on",
-      where => "me.created_on <= ?",
-      bind   => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']],
-      hri    => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }],
+    select_sql   => "me.created_on",
+    where    => "me.created_on <= ?",
+    bind     => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']],
+    hri      => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }],
+    sqlite   => { },
+    postgres => { },
+    mysql    => { },
+    mssql    => {
+      hri => [{ date => '2010-12-14 12:12:12.000' }, { date => '2011-12-14 12:12:12.000' }],
+    },
+    oracle   => {
+      hri => [{ date => '2010-12-14 12:12:12.000000' }, { date => '2011-12-14 12:12:12.000000' }],
     },
   },
 
   {
-    msg    => '-dt_after works',
-    search => { 'me.created_on' => { -dt_after => '2010-12-14 12:12:12' } },
+    msg      => '-dt_after works',
+    search   => { 'me.created_on' => { -dt_after => '2010-12-14 12:12:12' } },
     select   => [ [ -ident => 'me.created_on' ] ],
     as       => [ 'date' ],
-    sqlite => {
-      select   => "me.created_on",
-      where => "me.created_on > ?",
-      bind   => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']],
-      hri    => [{ date => '2011-12-14 12:12:12' }],
-    },
-    postgres => {
-      select   => "me.created_on",
-      where => "me.created_on > ?",
-      bind   => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']],
-      hri    => [{ date => '2011-12-14 12:12:12' }],
-    },
-    mysql => {
-      select   => "me.created_on",
-      where => "me.created_on > ?",
-      bind   => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']],
-      hri    => [{ date => '2011-12-14 12:12:12' }],
-    },
-    mssql => {
-      select   => "me.created_on",
-      where => "me.created_on > ?",
-      bind   => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']],
-      hri    => [{ date => '2011-12-14 12:12:12' }],
-    },
-    oracle => {
-      select   => "me.created_on",
-      where => "me.created_on > ?",
-      bind   => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']],
-      hri    => [{ date => '2011-12-14 12:12:12' }],
+    select_sql => "me.created_on",
+    where    => "me.created_on > ?",
+    bind     => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']],
+    hri      => [{ date => '2011-12-14 12:12:12' }],
+    sqlite   => { },
+    postgres => { },
+    mysql    => { },
+    mssql    => {
+      hri => [{ date => '2011-12-14 12:12:12.000' }],
+    },
+    oracle   => {
+      hri => [{ date => '2011-12-14 12:12:12.000000' }],
     },
   },
 
   {
-    msg    => '-dt_on_or_after works',
-    search => { 'me.created_on' => { -dt_on_or_after => '2010-12-14 12:12:12' } },
+    msg      => '-dt_on_or_after works',
+    search   => { 'me.created_on' => { -dt_on_or_after => '2010-12-14 12:12:12' } },
     select   => [ [ -ident => 'me.created_on' ] ],
     as       => [ 'date' ],
-    sqlite => {
-      select   => "me.created_on",
-      where => "me.created_on >= ?",
-      bind   => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']],
-      hri    => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }],
-    },
-    postgres => {
-      select   => "me.created_on",
-      where => "me.created_on >= ?",
-      bind   => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']],
-      hri    => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }],
-    },
-    mysql => {
-      select   => "me.created_on",
-      where => "me.created_on >= ?",
-      bind   => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']],
-      hri    => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }],
-    },
-    mssql => {
-      select   => "me.created_on",
-      where => "me.created_on >= ?",
-      bind   => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']],
-      hri    => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }],
-    },
-    oracle => {
-      select   => "me.created_on",
-      where => "me.created_on >= ?",
-      bind   => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']],
-      hri    => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }],
+    select_sql => "me.created_on",
+    where    => "me.created_on >= ?",
+    bind     => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']],
+    hri      => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }],
+    sqlite   => { },
+    postgres => { },
+    mysql    => { },
+    mssql    => {
+      hri => [{ date => '2010-12-14 12:12:12.000' }, { date => '2011-12-14 12:12:12.000' }],
+    },
+    oracle   => {
+      hri => [{ date => '2010-12-14 12:12:12.000000' }, { date => '2011-12-14 12:12:12.000000' }],
     },
   },
 
@@ -1083,13 +806,13 @@ for my $t (@tests) {
        }
        is_same_sql_bind(
          $r,
-         "(SELECT $db_test->{select} FROM event me WHERE $db_test->{where})",
-         $db_test->{bind},
+         '(SELECT ' . ($db_test->{select} || $t->{select_sql}) . ' FROM event me WHERE ' . ($db_test->{where} || $t->{where}) . ')',
+         $db_test->{bind} || $t->{bind},
          ($t->{msg} ? "$t->{msg} ($db)" : ())
        );
 
        SKIP: {
-       if (my $hri = $db_test->{hri}) {
+       if (my $hri = $db_test->{hri} || $t->{hri}) {
           skip "Cannot test database we are not connected to ($db)", 1 unless $dbs_to_test{$db};
           skip $db_test->{skip} . " ($db)", 1 if $db_test->{skip};