1 package # Hide from PAUSE
2 DBIx::Class::SQLMaker::SQLite;
4 use base qw( DBIx::Class::SQLMaker );
7 # SQLite does not understand SELECT ... FOR UPDATE
9 sub _lock_select () { '' };
24 seconds_since_epoch => 's',
25 fractional_seconds => 'f',
29 die $_[0]->_unsupported_date_extraction($_[1], 'SQLite')
30 unless exists $part_map{$_[1]};
31 "STRFTIME('%$part_map{$_[1]}', $_[2])"
35 sub _datetime_diff_sql {
36 my ($self, $part, $left, $right) = @_;
38 return "(JULIANDAY($left) - JULIANDAY($right))"
39 } elsif ($part eq 'second') {
40 return "(STRFTIME('%s',$left) - STRFTIME('%s',$right))"
42 die $_[0]->_unsupported_date_diff($_[1], 'SQLite')
55 sub _datetime_add_sql {
56 my ($self, $part, $date, $amount) = @_;
58 die $self->_unsupported_date_adding($part, 'SQLite')
59 unless exists $part_map{$part};
61 return "(datetime($date, $amount || ' $part_map{$part}'))"
65 sub _reorder_add_datetime_vars {
66 my ($self, $amount, $date) = @_;
68 return ($date, $amount);
71 sub _datetime_now_sql { "datetime('now')" }
73 =head1 DATE FUNCTION IMPLEMENTATION
75 The function used to extract date information is C<STRFTIME>, which supports
91 The function used to diff dates differs and only supports