Как сохранить дату окончания срока действия кредитной карты, если она состоит только из месяца и года? - PullRequest
10 голосов
/ 17 апреля 2011

Как сохранить дату окончания срока действия кредитной карты, если она состоит только из месяца и года?

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

Вместо этого я использую varchar? И не мешает ли это мне делать расчеты, чтобы определить, когда истекает срок действия карт, а что нет?

Ответы [ 3 ]

11 голосов
/ 17 апреля 2011

за январь 2014 года:

2014-01-00

Обычно используют 00 для месяца и дня, которые не определены. Из справочного руководства MySQL :

Некоторые функции даты могут использоваться с «нулевыми» датами или неполными датами, такими как «2001-11-00», тогда как другие не могут. Функции, которые извлекают части дат, обычно работают с неполными датами и поэтому могут возвращать 0, если в противном случае вы могли бы ожидать ненулевое значение. Например:

  mysql> SELECT DAYOFMONTH('2001-11-00'), MONTH('2005-00-00');
      -> 0, 0

и далее в руководстве для DATE_FORMAT:

Диапазоны для месяца и дня Спецификаторы начинаются с нуля из-за Тот факт, что MySQL позволяет хранить неполные даты, такие как «2014-00-00».

10 голосов
/ 17 апреля 2011

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

Например:

SELECT LAST_DAY('2011-02-01')

Результатом будет 2011-02-28 в этом году.Как правило, вам нужен последний день месяца для кредитной карты, потому что это фактический последний день, когда он действителен.

5 голосов
/ 17 апреля 2011

Просто используйте первый день месяца при сохранении в стандартном формате даты.Удобно иметь формат даты для конверсий, сравнений и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...