8 use DBIC::SqlMakerTest;
13 my $schema = DBICTest->init_schema();
15 my $sql_maker = $schema->storage->sql_maker;
17 my $date = DateTime->new(
26 my $date2 = $date->clone->set_day(16);
30 Dwarn [$schema->resultset('Artist')->search(undef, {
32 { -date_diff => [second => { -dt => $date }, { -dt => $date2 }] },
33 { -date_diff => [day => { -dt => $date }, { -dt => $date2 }] },
35 as => [qw(seconds days)],
36 result_class => 'DBIx::Class::ResultClass::HashRefInflator',
41 \[ $sql_maker->select ('artist', '*', { 'artist.when_began' => { -dt => $date } } ) ],
44 WHERE artist.when_began = ?
46 [['artist.when_began', '2010-12-14 12:12:12']],
51 \[ $sql_maker->update ('artist',
52 { 'artist.when_began' => { -dt => $date } },
53 { 'artist.when_ended' => { '<' => { -dt => $date2 } } },
56 SET artist.when_began = ?
57 WHERE artist.when_ended < ?
60 ['artist.when_began', '2010-12-14 12:12:12'],
61 ['artist.when_ended', '2010-12-16 12:12:12'],
67 \[ $sql_maker->select ('artist', '*', {
69 { -op => [ '=', 12, { -dt_month => { -ident => 'artist.when_began' } } ] },
70 { -op => [ '=', 2010, { -dt_get => [year => \'artist.when_began'] } ] },
71 { -op => [ '=', 14, { -dt_get => [day_of_month => \'artist.when_began'] } ] },
72 { -op => [ '=', 100, { -dt_diff => [second => { -ident => 'artist.when_began' }, \'artist.when_ended'] } ] },
73 { -op => [ '=', 10, { -dt_diff => [day => { -ident => 'artist.when_played_last' }, \'artist.when_ended'] } ] },
79 ( ? = STRFTIME('%m', artist.when_began) ) AND
80 ( ? = STRFTIME('%Y', artist.when_began) ) AND
81 ( ? = STRFTIME('%d', artist.when_began) ) AND
82 ( ? = ( STRFTIME('%s', artist.when_began) - STRFTIME('%s', artist.when_ended))) AND
83 ( ? = ( JULIANDAY(artist.when_played_last) - JULIANDAY(artist.when_ended)))
93 '-dt_month, -dt_get, and -dt_diff work'
96 like exception { $sql_maker->select('foo', '*', { -dt_diff => [year => \'artist.lololol', \'artist.fail'] }) }, qr/date diff not supported for part "year" with database "SQLite"/, 'SQLite does not support year diff';