Преобразование даты и времени SQL Server из строки

#sql #sql-server #asp-classic

#sql #sql-сервер #asp-классический

Вопрос:

Извините, спрашиваю еще раз .. у меня возникла проблема, когда я попытался вставить дату и время из поля. Проблема заключается в синтаксической ошибке преобразования даты и времени из символьной строки. я использую SQL Server 2000. ниже приведен мой код

 startDate = Trim(Request("StartDate"))
endDate = Trim(Request("EndDate"))

SELECT *
FROM tbl_Master
WHERE DoDate BETWEEN CONVERT(DATETIME, '"amp;startDateamp;"', 102)
                     AND CONVERT(DATETIME, '"amp;endDateamp;"', 102)
 

Очень признателен за это.Спасибо

С уважением -GreenCat-

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

1. Откуда вы пытаетесь запустить этот код?

2. анализатор sql-запросов и мой asp-код

3. Почему вы не конвертируете в PHP заранее?

Ответ №1:

 declare @startdate as varchar(10)
declare @enddate as varchar(10)

set @startdate='10/02/2011'
set @enddate = '10/31/2011'


select * from [dbo].[Test]
where _date between Cast(@startdate AS DATETIME) and cast(@enddate as DAtetime)
 

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

1. в этом коде вы уже правильно установили дату. как, если я получу дату из ‘»amp;StartDate amp;»‘»

2. Я бы выполнил проверку перед вызовом хранимой процедуры и передачей параметров в SQL. Проверьте входные данные в коде вашего приложения, затем перейдите к SQL. Зачем передавать данные дерьма в SQL, если вы можете их перехватить и обработать заранее.

Ответ №2:

Я считаю, что вам следует проверить формат вашей строки даты, которая анализируется по запросу. 102 в преобразовании указывает SQL, в каком формате пытаться обработать вашу строковую дату. Обратитесь к этой странице (http://msdn.microsoft.com/en-us/library/ms187928.aspx ), чтобы увидеть, какой формат вы используете.

Если у вас все еще возникают проблемы, можете ли вы опубликовать значение Trim(Request("StartDate")) ?

Я не рядом со своим компьютером для разработки, но вы могли бы попробовать формат 106…

 startDate = Trim(Request("StartDate"))
endDate = Trim(Request("EndDate"))

SELECT *
FROM tbl_Master
WHERE DoDate BETWEEN CONVERT(DATETIME, '"amp;startDateamp;"', 106)
                     AND CONVERT(DATETIME, '"amp;endDateamp;"', 106)
 

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

1. я дам вам знать позже. некоторое время вдали от ПК

Ответ №3:

Это работает в анализаторе запросов SQL:

 SELECT CONVERT(DATETIME, '11-OCT-2011', 106)
 

Я предполагаю, что ваша проблема заключается в том, как вы добавляете свою дату в строку SQL. Я предполагаю, что у вас есть что-то подобное в вашем ASP-коде…

 strSQL = "SELECT * FROM tbl_Master " amp; _
         "WHERE DoDate BETWEEN CONVERT(DATETIME, '"amp;startDateamp;"', 106) AND CONVERT(DATETIME, '"amp;endDateamp;"', 106) "
 

Если это так, это должно сработать, если это не так, пожалуйста, дайте нам текст strSQL. Вы пробовали ставить пробелы между вашими амперсандами? ‘» amp; StartDate amp; «‘

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

1. «ВЫБЕРИТЕ * ИЗ отчета о данных, ГДЕ местоположение, например, ‘%» amp; slocation amp; «%’ И ДАТА МЕЖДУ #» amp; Format(datefrom,»мм / дд / гггг») amp; «# и #» amp; Format(dateto,»мм / дд / гггг») amp; «#;» …я пробую этот код, но формат несоответствия ..zzz

2. Что возвращает эта строка SQL? Можете ли вы создать окно сообщения с текстовым значением, чтобы вы могли получить фактический SQL-запрос, который вы отправляете в базу данных?

3. можете ли вы ответить, дайте мне свой адрес электронной почты, сэр, чтобы я мог отправить вам свой полный код .. спасибо

4. Если вы хотите поделиться своим кодом, используйте code paste или что-то подобное для совместного использования. Возможно, я не смогу ответить на ваш вопрос или просмотреть ваш код. codepaste.dev7studios.com

Ответ №4:

вы можете попробовать это

 declare @startDate datetime
declare @endDate  datetime

set @startDate = value of startdate

set @endDate = value of end date

SELECT * FROM a WHERE a.Entry_Date BETWEEN CONVERT(DATETIME,@startDate, 102)
                 AND CONVERT(DATETIME, @endDate, 102)