Какой формат предпочтительнее для хранения даты / времени в базе данных SQL Server, если основным языком является PHP?
Я планирую PHP-приложение, которое должно хранить дату/время в базе данных MSSQL. (Для любопытных, это приложение календаря.) Какой формат предпочтительнее для хранения этой информации?
MSSQL имеет свой собственный тип данных datetime, который хорошо работает в самой базе данных и очень удобен для чтения. Однако нет никаких функций MSSQL для перевода значений datetime в предпочтительный формат PHP -- unix timestamp. Это делает его немного более болезненным для использования с PHP. UNIX timestamp-это привлекательно, потому что это то, что нравится PHP, но это, конечно, не так читаемо, и нет кучки хороших встроенных функций MSSQL для работы с данными.
Будете ли вы хранить эту информацию как тип данных datetime, как временные метки UNIX (как int, bigint или varchar datatype), как оба формата бок о бок или как что-то совсем другое?
3 ответов:
Я бы сохранил даты в формате MS-SQL, чтобы помочь в использовании функций манипулирования датами в T-SQL в полной мере. Легче писать и читать
SELECT * FROM Foo WHERE DateDiff(d,field1,now()) < 1Чем пытаться выполнить эквивалентную операцию, манипулируя целыми числами
Для преобразования даты MsSQL в метку времени unix используйте dateDiff:
SELECT DATEDIFF(s,'1970-01-01 00:00:00',fieldName) as fieldNameTS FROM TableName WHERE fieldName between '10/1/2008' and '10/31/2008'Чтобы преобразовать метку времени Unix в дату MsSQL, вы можете сделать это в PHP:
$msSQLDate = date("Y-m-d H:i:s", $unixDate );Или в MsSQL
INSERT INTO TableName ( fieldName ) VALUES ( DATEADD(s,'1970-01-01 00:00:00', ? ) )Где параметр один int ($unixDate)
Я бы рекомендовал то же самое, что и для всех дат в любом движке БД, собственный тип БД. (Дата-Время)
Просто используйте "YYYY-MM-DD HH: MM:SS" для вставки в php:
date('Y-m-d H:i:s', $myTimeStampInSeconds);-редактировать в ответ на комментарии ниже здесь -
- для выбранных столбцов можно использовать
$timestamp = strtotime( $yourColumnValue );- я рекомендую хранить в собственном формате databas, потому что вы можете использовать SQL для сравнения записей с помощью функций SQL date / time, таких как DATEADD () и т. д.
Всем привет и добрый день
Да, может быть, это лучший способ, хранить даты в БД, они будут принимать формат БД, и вы можете форматировать, когда вам нужно, как вы wich
Но есть еще одно решение в разработанном ISO международном формате дат, я имею в виду ISO 8601. Международный формат, определенный ISO (ISO 8601), пытается решить все проблемы с датами, определяя числовую систему дат следующим образом: гггг-ММ-ДД, гдеГггг - это год [все цифры, т. е. Две тысячи сто] Мм-это месяц [01 (Январь) - 12 (декабрь)] DD-день [01-31] в зависимости от бабочек: P
Использование числовых дат также имеет некоторые подводные камни в отношении удобочитаемости и удобства использования.Но формат даты ISO, однако, является лучшим выбором для представления даты, которое универсально (и точно) понятно.
Обратите внимание, что этот формат также может использоваться для представления точной даты и времени с информацией о часовом поясеВот подробное описание информация о ISO 8601: 2000
Больше ничего.... Пока-пока
Comments