Это прекрасно работает для меня.
SELECT s2.*, s1.Total
FROM Stores s1
LEFT JOIN Stores s2 on s1.Store = s2.Store
AND DATEDIFF(day, s2.Date, s1.Date) = -1
WHERE s2.Total IS NOT NULL
ORDER BY s1.Date, s1.Store
Можно использовать модуль DateTime CPAN.
например.
my $dt = DateTime->new(
year => 2009,
hour => 15,
minute => 31,
second => 19,
nanosecond => 430888
);
my $dt2 = DateTime->new(
year => 2009,
hour => 15,
minute => 31,
second => 19,
nanosecond => 427763
);
my $duration = $dt - $dt2;
который даст Вам DateTime:: объект Продолжительности получить результаты.
DateTime является лучшим, но только если Вы не забываете использовать subtract_datetime_absolute метод вместо перегруженного минус оператор, когда Вы делаете любую математику даты, включающую вычитание. Это - единственный способ вытащить "продолжительность секундомера" из двух datetimes, и только продолжительность секундомера когда-либо была полезна для вида арифметики дат, которую я делаю. DateTime:: интерфейс Duration путает и вводит в заблуждение, особенно когда Вы думаете, что у Вас есть продолжительность секундомера, и Вы не делаете.
Люди упомянули вначале, как путание этого было, но оно никогда не исправлялось.
Время:: модуль Части делает хорошую альтернативу. Я должен был бы сказать, что в целом это не столь полезно как DateTime, но это определенно избегает этого вида беспорядка. Я предпочитаю DateTime, но едва-едва.