#This is a function to override SQLites DATETIME('NOW'). sub my_fake_time { # gmtime() normally returns the current time but it is overriden by Test::MockTime to give a fake time. # Actually I am using the version of gmtime() from Time::gmtime as it has a nicer interface. As this too overrides # Perls core gmtime() function it must be use'd after Test::MockTime so all the overrides occur in the right order. my $t = gmtime; # return the fake date in the same format as SQLite returns. return sprintf '%04d-%02d-%02d %02d:%02d:%02d', $t->year + 1900, $t->mon + 1, $t->mday, $t->hour, $t->min, $t->sec; }; ... # This works. DATETIME('NOW') in my SQL now returns a fake time. $dbh->sqlite_create_function( 'DATETIME', 1, \&my_fake_time ); # However CURRENT TIMESTAMP still doesn't work even though from what I've read it is implemented in terms of DATETIME('NOW') # # I tried this but it doesn't work. $dbh->sqlite_create_function( 'CURRENT TIMESTAMP', 1, \&my_fake_time ); # Any other ideas?