За последние 24 часа нас посетили 17886 программистов и 1719 роботов. Сейчас ищут 889 программистов ...

формат даты

Тема в разделе "PHP для новичков", создана пользователем Тохич, 31 янв 2007.

  1. vb

    vb Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
    Ты же сам говоришь что использование функций языка программирования - это тупо, мол надо использовать функции БД??? :))))
    А что касается MySQL в пятой версии она не плохро подросла, тоже свои функции процедуры :)

    А с этим никто и не спорил, просто не нужно выдумывать велосипеды там где они не нужны.
     
  2. Anonymous

    Anonymous Guest

    Для меня например, Оракл - вполне обычная вещь, а точнее, ежедневная. И MySQL тоже. Поэтому, когда я задолбался и дома и на работе лазить в кучу справочников я стал хранить время — в секундах. )
    Не-не... SYSDATE() в оракле нету. Есть SELECT SYSDATE FROM DUAL.... ;)
     
  3. vb

    vb Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
    Все теперь ты тоже личный враг Psih:) Я пойду пока чаю попью отбивайся :)))
     
  4. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Горбунов Олег
    Ужас, ну тогда Oracle впринципе не совместим с обсалютным большинством баз данных :)

    Хорошо если хоть в TIMESTAMP хранят, а то умники бывают которые его в int пихают и тогда сделать такое (см. ниже) вообще не представляю как можно:
    PHP:
    1. BEGIN
    2.   DECLARE done INT DEFAULT 0;
    3.   DECLARE age, days, is_birthday INT DEFAULT NULL;
    4.   DECLARE id INTEGER DEFAULT 0;
    5.   DECLARE days_in_year INTEGER DEFAULT IF(IFNULL(DATE( CONCAT(IF(MONTH(NOW()) > 2, YEAR(NOW()), YEAR(NOW())+1), '-02-29')), 0) = 0, 365, 366);
    6.  
    7.   DECLARE cur CURSOR FOR SELECT
    8.   prf_id,
    9.   IF ( DATEDIFF(DATE(CONCAT(DATE_FORMAT(NOW(), "%Y"), DATE_FORMAT(prf_birthday, "-%m-%d"))), NOW() ) <= 0,
    10.     DATE_FORMAT(NOW(), "%Y") - YEAR(prf_birthday),
    11.     DATE_FORMAT(NOW(), "%Y") - 1 - YEAR(prf_birthday)
    12.   ),
    13.   IF(DATE_FORMAT(prf_birthday, '%d%m') = '2902', NULL, IF(days_in_year = TIMESTAMPDIFF(DAY, NOW(), prf_birthday + INTERVAL TIMESTAMPDIFF(YEAR, prf_birthday, NOW()) YEAR + INTERVAL 1 YEAR + INTERVAL 1 DAY), 0, TIMESTAMPDIFF(DAY, NOW(), prf_birthday + INTERVAL TIMESTAMPDIFF(YEAR, prf_birthday, NOW()) YEAR + INTERVAL 1 YEAR + INTERVAL 1 DAY))),
    14.   IF(DATE_FORMAT(prf_birthday, "%m%d") = DATE_FORMAT(NOW(), "%m%d"), 1, 0)
    15.   FROM profiles WHERE IF(in_prf_id IS NULL, TRUE, FALSE) OR prf_id=in_prf_id;
    16.  
    17.   DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
    18.  
    19.   OPEN cur;
    20.   REPEAT
    21.    FETCH cur INTO id, age, days, is_birthday;
    22.    IF NOT done THEN
    23.       UPDATE profiles SET
    24.       prf_days_left = days,
    25.       prf_age = age,
    26.       prf_is_birthday = is_birthday
    27.       WHERE prf_id = id;
    28.    END IF;
    29.   UNTIL done END REPEAT;
    30.   CLOSE cur;
    31.  
    32.  
    Это процедура в MySQL :)
     
  5. Anonymous

    Anonymous Guest

    ГЫ. Нет слов. =)И в курсор пихать?? Жесть =))
    Да ладно.... не суть важно. ) Я же с самого начала сказал, кому как удобнее )))
     
  6. draak

    draak Guest

    про MySQL вы зря парня напугали
    типы полей можно использовать смело и ничего не боятся...
    DATE (ГГГГ-ММ-ДД)
    TIME (ЧЧ:ММ:СС)
    DATETIME (ГГГГ-ММ-ДД ЧЧ:ММ:СС)
    TIMESTAMP (ГГГГММДДЧЧММСС)

    > DATE_FORMAT - тебе поможет
    только помни что лучше поле возвращать с другим названием так как он после преобразования теряет свое свойство и становится текстом...


    Только вот TIMESTAMP имеет свойство по умолчанию менятся при апдейтах. (и это хорошо)