Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Конвертация времени


Автор: igorold 16.4.2007, 08:18
необходимо по алгоритму хранить в базе 2 времени : 
одно в десятичном формате - 2,5 часа 
другое в формате TIME: 2:30
 и необходимо конвертировать время
иногда в десятичный формат, иногда наоборот ... поискрм ничего не нашел ... может не умею
пользоваться поиском ...

какие есть наработки???   smile 

Автор: SergeBS 17.4.2007, 07:26
igorold, 
Нет таких форматов у сервера. Вот и все наработки. Хочешь хранить в извращенном виде - придумывай свое извращенное поле и храни в нем как хочешь.

Автор: igorold 17.4.2007, 08:04
Цитата(SergeBS @ 17.4.2007,  07:26)
igorold, 
Нет таких форматов у сервера. Вот и все наработки. Хочешь хранить в извращенном виде - придумывай свое извращенное поле и храни в нем как хочешь.

такой "извращенный" вид требуется различным службам ... одни используют десятичный формат,
другие - классический ... при создании записи - эти поля должны иметь одинаковое
значение, но при правке они потом могут различаться ... 

от вас не требовалось дать характеристику задаче - изврат или нет ... ваше личное мнение - оно ваше личное и не более ...
а если есть математическая или если хотите - программистская задача ... то ее надо решать ... 
рациональное зерно я в вашем ответе откопал ... спасибо за него ...  smile 

Автор: Glip 17.4.2007, 10:35
я думаю что хранить надо в формате time поддерживаемом субд, а преобразование делать в клиентской программе. это всего-лишь способ отображения данных

Автор: igorold 17.4.2007, 11:22
Цитата(Glip @ 17.4.2007,  10:35)
я думаю что хранить надо в формате time поддерживаемом субд, а преобразование делать в клиентской программе. это всего-лишь способ отображения данных

согласен  smile  ...MySQL поддерживает оба формата ... я думал, может есть СТАНДАРТНАЯ функция перевода необходимых мне формата
одного в другой  ... 
В таком случае хранить лучше в одном формате ... уже храняться у меня оба поля в десятичном формате ... так и оставлю....
тем более в форуме Perl мне подкинули готовое решение для конвертации ... 

У меня скрипт на перл+MySQL+темплайт-шаблоны .... в шаблоны буду передавать в каком виде надо ... просто большой 
массив сразу в форму не передашь - предварительно придется конвертить время в каждой записи ... 
а хотелось все в одном запросе ... значит не судьба ...  smile 

Автор: SergeBS 17.4.2007, 11:43
igorold, 
Ну ладно, не понравилось слово извращенный - заменю на странный smile. Потому что если применять правильный формат (поле/переменная именно типа даты/времени), то ничего преобразовывать в какие-то странные форматы не придется. Все и так будет работать.
Останется только задача вывода (на экран/на печать) в желаемом формате. Это задача - клиентского приложения. Т.е. - не нужно заставлять сервер заниматься НЕНУЖНОЙ работой.

Цитата
уже храняться у меня оба поля в десятичном формате 

Сочувствую. Изрядное количество людей тоже путают формат хранения с форматом ввода/вывода/отображения. Но надеюсь, что тип поля все-таки DateTime.

Автор: igorold 17.4.2007, 12:24
нет, формат самый, что ни на есть float ... такова была изначально постановка задачи, потому что время измеряется в ДАННОЙ КОНКРЕТНОЙ задаче без секунд и с одним знаком после запятой -  2,5 ... 2 ... 18 ... 1,4 ... потом суммарное время умножается на цену часа и получается сумма ... которая тоже в формате float ... 

умножте время на число, что у ВАС получиться, уважаемый SergeBS ???

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

Автор: SergeBS 17.4.2007, 14:14
igorold, 
Цитата
умножте время на число, что у ВАС получиться, уважаемый SergeBS ???
я математик, а не психолог ...  

Ну а я программист. При умножении у меня получится то что я захочу. Как правило получается время. Но могу и число получить. Нет проблем. Просто 
Цитата
время измеряется в ДАННОЙ КОНКРЕТНОЙ задаче без секунд и с одним знаком после запятой -  2,5 ... 2 ... 18 ... 1,4 ... потом суммарное время умножается на цену часа и получается сумма ... которая тоже в формате float ... 

Имеем в результате - вместо 1 приведения к формату времени при вводе данных
(измерение и ввод данных в СУБД - это две большие разницы):
1. Шаманство с ценой часа.
2. Шаманство с выводом в нужном формате.
3. Шаманство с хранением.
Как программист я без криков просто советую, как делать по правилам. Не хотите - как хотите. Продолжайте делать как нравится. Но не надо меня убеждать, что иначе невозможно, а тем более - что иначе - неправильно.
В чем проблема? На что обида? Я Вас ни к чему не принуждаю, право слово. Просто попытался подсказать, как можно обойти проблему.

Автор: sergejzr 19.4.2007, 12:51
Модератор: вырезал "меряние" датами. Плз подобное впредь только в личку 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)