Я новичок php / mysql, поэтому я вставляю даты в любом формате, который обычно отображается на моих страницах, например:
Saturday, June 19, 2010
прямо в базу данных в виде простого текста. Но я видел, как люди вводили его каким-то другим способом, а затем отображали ту же самую запись в различных форматах, используя некоторую функцию php. Каким образом это сделать, чтобы я мог иметь одну запись в базе данных и показывать ее в различных форматах, таких как:
6/19/2010 June 19, 2010 Saturday, June 19, 2010
и т.д…
Как сделать то же самое, но с деньгами?
Вы должны хранить данные как MYSQL datetime feild. Затем используйте php для форматирования данных, как вы этого хотите.
Что касается цены, я рекомендую вам хранить ее в долларах США. Таким образом, вы можете легко конвертировать его в другие валюты.
Я сам храню его как временную метку unix.
Функция time () возвращает временную метку unix.
И проверьте функцию date () здесь:
http://php.net/manual/en/function.date.php
Он принимает два аргумента: формат, который вы хотите отобразить, и временную метку unix.
Для дат просто сохраните их как DATETIME
. Легко читать и легко работать с PHP. Вы могли бы пойти с чистым TIMESTAMP
но я бы не рекомендовал его.
Диапазон DATETIME …
'1000-01-01 00:00:00' до '9999-12-31 23:59:59'.
Диапазон TIMESTAMP …
'1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07'
Не только это, но и у вас есть много встроенных функций MYSQL для работы с DATETIME, например INTERVAL
который позволит вам делать отличные вещи.
// easy pull all comments values from within a range SELECT * FROM your_table WHERE your_date_field = DATE_SUB('2001-01-01 12:12:12' + INTERVAL 15 DAYS;
Если вам нужно работать со временными метками на PHP, вы можете вытащить их в реальном времени на SQL следующим образом:
// converts a DATETIME field real time to timestamps SELECT UNIX_TIMESTAMP(your_date_field) FROM your_table (...)
И когда вы вытаскиваете их, просто форматируйте их так или иначе, как вам нравится использовать strftime
. Пример ниже.
// pull a date from MySQL and format them to a custom format // %A -> full weekday | %B -> full month name | %d -> month day | %Y - year 1999 $sql = "SELECT title, name, UNIX_TIMESTAMP(date) as timestamp FROM your_table WHERE your_limits"; $result = mysql_fetch_assoc(mysql_query($sql)); echo strftime("%A, %B %d, %Y", $result['timestamp']);
Я всегда буду хранить их в их загруженной стоимости. Только когда есть транзакция или изменение, вы должны конвертировать из одной валюты в другую. Остальные сохраняют значения, когда они были загружены по первоначальной цене.
| 135.23 | USD | | 200.35 | EUR | | 34.00 | GBP |
При отображении валют вы можете сделать преобразование в реальном времени. Просто держите отдельную таблицу с текущей датой обмена и делайте математическое время в реальном времени. Было бы также плюсом, чтобы показать пользователю ваши коэффициенты конверсии.
Скажите, что пользователь выше с вышеуказанной учетной записью хотел получить свою валюту в евро.
135.23 USD = 109.39 EUR (1 USD = 0.80893059 EUR) 30 GBP = 35.90 EUR (1 GBP = 1.19681281 EUR) 200.35 EUR ----------------------- total 345.64 EUR