Какой формат предпочтительнее для хранения даты / времени в базе данных SQL Server, если основным языком является PHP?



Я планирую PHP-приложение, которое должно хранить дату/время в базе данных MSSQL. (Для любопытных, это приложение календаря.) Какой формат предпочтительнее для хранения этой информации?



MSSQL имеет свой собственный тип данных datetime, который хорошо работает в самой базе данных и очень удобен для чтения. Однако нет никаких функций MSSQL для перевода значений datetime в предпочтительный формат PHP -- unix timestamp. Это делает его немного более болезненным для использования с PHP. UNIX timestamp-это привлекательно, потому что это то, что нравится PHP, но это, конечно, не так читаемо, и нет кучки хороших встроенных функций MSSQL для работы с данными.

Будете ли вы хранить эту информацию как тип данных datetime, как временные метки UNIX (как int, bigint или varchar datatype), как оба формата бок о бок или как что-то совсем другое?

702   3  

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);

-редактировать в ответ на комментарии ниже здесь -

  1. для выбранных столбцов можно использовать $timestamp = strtotime( $yourColumnValue );
  2. я рекомендую хранить в собственном формате databas, потому что вы можете использовать SQL для сравнения записей с помощью функций SQL date / time, таких как DATEADD () и т. д.

Всем привет и добрый день

Да, может быть, это лучший способ, хранить даты в БД, они будут принимать формат БД, и вы можете форматировать, когда вам нужно, как вы wich

Но есть еще одно решение в разработанном ISO международном формате дат, я имею в виду ISO 8601. Международный формат, определенный ISO (ISO 8601), пытается решить все проблемы с датами, определяя числовую систему дат следующим образом: гггг-ММ-ДД, где

Гггг - это год [все цифры, т. е. Две тысячи сто] Мм-это месяц [01 (Январь) - 12 (декабрь)] DD-день [01-31] в зависимости от бабочек: P

Использование числовых дат также имеет некоторые подводные камни в отношении удобочитаемости и удобства использования.Но формат даты ISO, однако, является лучшим выбором для представления даты, которое универсально (и точно) понятно.

Обратите внимание, что этот формат также может использоваться для представления точной даты и времени с информацией о часовом поясе

Вот подробное описание информация о ISO 8601: 2000

Http://www.iso.org/iso/support/faqs/faqs_widely_used_standards/widely_used_standards_other/date_and_time_format.htm

Больше ничего.... Пока-пока

Comments

    Ничего не найдено.