Ошибка преобразования строки SQL Server в DATETIME - PullRequest
0 голосов
/ 03 апреля 2019

Я использую Laravel 5.5 для рефакторинга одного веб-приложения, и здесь у меня есть необработанный запрос, в котором мне нужно преобразовать строку даты, полученную из пользовательского ввода с помощью PHP, в DATETIME в Sql Server, чтобы сравните это с некоторыми другими столбцами. Это небольшая часть запроса, где что-то не получается:

        SET NOCOUNT ON;
        DECLARE @the_date DATETIME;
        DECLARE @floor VARCHAR(10);
        SET @the_date = (SELECT CONVERT(DATETIME, '?', 105));
        SET @floor = '?' + '%';

        SELECT fo_bs.SeatCir,
                fo_bs.UserDAS,
                fo_bs.FromDate,
                fo_bs.ToDate,
                fo_bs.Status
        FROM BookedSeats fo_bs
        WHERE fo_bs.FromDate <= @the_date
            AND fo_bs.ToDate >= @the_date
            AND fo_bs.SeatCir LIKE @floor

Я не писал запрос, я просто адаптировал его для необработанного запроса Laravel для рефакторинга (это очень сложно, и я не хочу переписывать все это с помощью Query Builder) веб-приложения, и это ошибка брошенный Ларавелом:

SQLSTATE[22007]: Invalid datetime format: 241 [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]
Conversion failed when converting date and/or time from character string. (SQLExecute[241] at ext\pdo_odbc\odbc_stmt.c:260) 
(SQL: SET NOCOUNT ON; DECLARE @the_date VARCHAR(20); DECLARE @floor VARCHAR(10); SET @the_date = (SELECT CONVERT(DATETIME, '03-04-2019 00:04:00', 105)); SET @floor = 'OV6.' + '%'; SELECT fo_bs.SeatCir, fo_bs.UserDAS, fo_bs.FromDate, fo_bs.ToDate, fo_bs.Status FROM FlexibleOffice.dbo.BookedSeats fo_bs WHERE fo_bs.FromDate <= @the_date AND fo_bs.ToDate >= @the_date AND fo_bs.SeatCir LIKE @floor )

Теперь, если я скопирую весь SQL-код из ошибки (3-я строка) и вставлю его в SQL Server Management Studio и выполню его, он отлично получит строки, и поэтому я так растерялся.

Существует ли какой-либо строгий режим в odb_driver для Laravel? Я пробовал настройку 'strict' => false в config/database.php для моей конфигурации соединения, но не повезло с этим.

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