Я обеспокоюсь тем, чтобы хранить данные DateTime как julianday в SQLite?

Принятие этого работает на машине Linux, я всегда обрабатывал его как это:

exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile));

Это запускает команду $cmd, перенаправляет вывод команды к $outputfile и пишет идентификатор процесса в $pidfile.

, Который позволяет Вам легко контролировать то, что делает процесс и если он все еще работает.

function isRunning($pid){
    try{
        $result = shell_exec(sprintf("ps %d", $pid));
        if( count(preg_split("/\n/", $result)) > 2){
            return true;
        }
    }catch(Exception $e){}

    return false;
}
8
задан SilentGhost 6 September 2009 в 16:51
поделиться

3 ответа

Храните в обоих направлениях. Структуры могут быть установлены по-своему, и если вы ожидаете найти необработанный столбец со строкой в ​​формате ISO, то это, вероятно, будет труднее обойтись, чем это того стоит.

Проблема наличия двух столбцов заключается в согласованности данных, но sqlite должен иметь все необходимое для работы. Версия 3.3 поддерживает проверочные ограничения и триггеры. Прочтите функции даты и времени . Вы должны иметь возможность делать то, что вам нужно, полностью в базе данных.

CREATE TABLE Table1 (jd, isotime);

CREATE TRIGGER trigger_name_1 AFTER INSERT ON Table1
BEGIN
    UPDATE Table1 SET jd = julianday(isotime) WHERE rowid = last_insert_rowid();
END;

CREATE TRIGGER trigger_name_2 AFTER UPDATE OF isotime ON Table1
BEGIN
    UPDATE Table1 SET jd = julianday(isotime) WHERE rowid = old.rowid;
END;

И если вы не можете делать то, что вам нужно, в базе данных, вы можете написать расширение C для выполнения необходимых функций. Таким образом, вам не нужно будет касаться фреймворка, кроме как загрузить расширение.

5
ответ дан 5 December 2019 в 14:04
поделиться

Юлианский день удобен для всех видов вычислений даты, но он может прилично хранить часть времени (с точными часами, минутами и секундами). Раньше я использовал как поля Юлианского дня (для дат), так и секунды от эпохи (для экземпляров datetime ), но только тогда, когда у меня были особые потребности в вычислениях (дат и соответственно раз). Я думаю, что простота форматирования даты и времени в формате ISO должна сделать их предпочтительным выбором, скажем, примерно в 97% случаев.

6
ответ дан 5 December 2019 в 14:04
поделиться

Потому что 2010-06-22 00:45:56 гораздо легче читать человеку, чем 2455369.5318981484 . Текстовые даты отлично подходят для выполнения специальных запросов в SQLiteSpy или SQLite Manager.

Главный недостаток, конечно же, в том, что для текстовых дат требуется 19 байт вместо 8.

0
ответ дан 5 December 2019 в 14:04
поделиться
Другие вопросы по тегам:

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