Изучаем ошибку SQL в анкете

Наверное, одни из самых технически оснащённых, мощный и развитых комплексов дополнительного образования являются научно-технологические фабрики “Кванториум”. Там и ЧПУ-станки, и 3D/фотополимерные принтеры, и системы виртуально/дополненной реальности, а также многое многое другое.

Само собой, когда пришло положение о конкурсе “Кванториада” – мы со студенческим кружком не могли пройти мимо. Задания, как по мне, весьма не простые, но в номинации  Low cost high-tech (сделай дешёвый аналог дорогому продукту) можно попробовать принять участие. Не победим, но заявим о клубе. 🙂 Сюрприз ждал в анкете регистрации, при попытки ввода даты рождения участников получаем SQLSTATE[22008]: Datetime field overflow: 7 ERROR: date/time field value out of range: “23.01.1989” HINT: Perhaps you need a different “datestyle” setting. The SQL being executed was: UPDATE “user” SET “updated_at”=1557245448, “birthdate”=’23.01.1989′ WHERE “id”=89

Что в переводе означает переполнение поля даты и времени, значение поля даты / времени вне диапазона. Отчего так произошло?  Предположу, что по умолчанию используется формат YYYY-MM-DD (год, месяц, день), ввести же предлагают в формате день, месяц, год. Судя по сервисному сообщению используется PostgreSQL. Следует использовать параметр DateStyle для управления тем, как PostgreSQL генерирует даты.

Параметр DateStyle (string) задаёт формат вывода значений даты и времени, а также правила интерпретации неоднозначных значений даты. По историческим причинам эта переменная содержит два независимых компонента: указание выходного формата (ISO, Postgres, SQL и German) и указание порядка год(Y)/месяц(M)/день(D) для вводимых и выводимых значений (DMY, MDY или YMD). Эти два компонента могут задаваться по отдельности или вместе. Ключевые слова Euro и European являются синонимами DMY, а ключевые слова US, NonEuro и NonEuropean — синонимы MDY.

Ну а дальше нужен доступ к исходным кодам. 🙂 Собственно система позволяет произвести регистрацию и без ввода даты, даже несмотря на то, что поле помечено красной звездочкой, как обязательное. Само собой мы написали в техническую поддержку. Заодно появился повод создать ещё одну красивую электронную почту – evrika@katip39.ru. Пишите 🙂

Поделиться ссылкой:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *