Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid

Re: Mocking time with SQLite

by jaldhar (Vicar)
on Dec 26, 2010 at 14:51 UTC ( #879214=note: print w/replies, xml ) Need Help??

in reply to Mocking time with SQLite

Here's an update on how I'm progressing with this. I took the second approach from my initial post and added the following code to my script.

#This is a function to override SQLites DATETIME('NOW'). sub my_fake_time { # gmtime() normally returns the current time but it is overriden b +y 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::MockTi +me 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?


Replies are listed 'Best First'.
Re^2: Mocking time with SQLite
by jaldhar (Vicar) on Dec 26, 2010 at 14:59 UTC

    Yet another update. It's CURRENT_TIMESTAMP (I left out the underscore.) Now this works:

    dbh->sqlite_create_function( 'CURRENT_TIMESTAMP', 0, \&my_fake_time );


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://879214]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (5)
As of 2021-03-09 08:09 GMT
Find Nodes?
    Voting Booth?
    My favorite kind of desktop background is:

    Results (132 votes). Check out past polls.