Что лучший способ состоит в том, чтобы иметь дело с математикой времени в Perl?

Это прекрасно работает для меня.

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
6
задан brian d foy 5 March 2009 в 18:29
поделиться

2 ответа

Можно использовать модуль 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:: объект Продолжительности получить результаты.

13
ответ дан 8 December 2019 в 13:03
поделиться

DateTime является лучшим, но только если Вы не забываете использовать subtract_datetime_absolute метод вместо перегруженного минус оператор, когда Вы делаете любую математику даты, включающую вычитание. Это - единственный способ вытащить "продолжительность секундомера" из двух datetimes, и только продолжительность секундомера когда-либо была полезна для вида арифметики дат, которую я делаю. DateTime:: интерфейс Duration путает и вводит в заблуждение, особенно когда Вы думаете, что у Вас есть продолжительность секундомера, и Вы не делаете.

Люди упомянули вначале, как путание этого было, но оно никогда не исправлялось.

Время:: модуль Части делает хорошую альтернативу. Я должен был бы сказать, что в целом это не столь полезно как DateTime, но это определенно избегает этого вида беспорядка. Я предпочитаю DateTime, но едва-едва.

5
ответ дан 8 December 2019 в 13:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: