Когда я создаю таблицу с месяцем, он дает только 0000-00-00

#mysql #date #dayofmonth

#mysql #Дата #dayofmonth

Вопрос:

Я создаю таблицу на час

 CREATE TABLE hour (
    Name1 varchar(25) not null,
    Datee Datetime not null DEFAULT (CURRENT_TIMESTAMP()),
    Monthh date not null DEFAULT (MONTH(CURRENT_DATE()))
);
  

Mysql дает мне только 0000-00-00, а не имя, где я использую кнопку в php. Что в этом плохого и насколько правильно? На мой взгляд, у моего phpadmin нет функции МЕСЯЦА

Комментарии:

1. ТИП данных ДАТЫ неверен для номера месяца, который является числовым.

Ответ №1:

 CREATE TABLE hour ( Name1 varchar(25) not null,
                    Datee DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
                    Monthh TINYINT NOT NULL DEFAULT (MONTH(CURRENT_TIMESTAMP))
                  );
  

скрипка

PS. HOUR зарезервированное слово — я бы рекомендовал переименовать таблицу.

Комментарии:

1. Таблица имен предназначена только для того, чтобы спросить вас. Настоящее имя «Годзина». Польский язык 😅

Ответ №2:

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

 CREATE TABLE Godzina (
  Nazwa varchar(25) not null,
  Randka Datetime not null DEFAULT CURRENT_TIMESTAMP()
);

INSERT INTO Godzina (Nazwa) VALUES ('TestName');

SELECT 
    Nazwa,
    Randka,
    MONTH(Randka) AS Miesiac
FROM Godzina;
  

Протестируйте его на SQLize.online

Комментарии:

1. Ничто не мешает Datee изменить структуру OP в будущем, тогда Monthh как останется неизменным. Ваше решение неприменимо в таком случае.