2013-08-22 3 views
0

У меня есть следующий код:Изменить формат даты в SQL для ASP

"SELECT top 1 * FROM CensusFacility_Records WHERE Division_Program = 'Division 1' AND JMS_UpdateDateTime = '" & date & "'" 

Формат даты в столбце JMS_UpdateDateTime является: 8/22/2013 12:00:07 AM Как я могу убедиться, что моя «дата» в запросе преобразуется в правильный формат времени?

Моя переменная date в моем SQL-запросе является реальным/датой. Я хотел бы, чтобы он соответствовал формату в поле JMS_UpdateDateTime.

+1

Вы говорите, что поле базы данных является строкой, а ваша переменная 'date' в коде является реальной датой/временем? Или наоборот, где база данных имеет 'DateTime', а ваша переменная - строка? –

+0

Моя переменная date - это реальное время. Я хотел бы, чтобы он соответствовал формату в поле JMS_UpdateDateTime. – Jimmy

+0

Я собираюсь предположить, что у вас есть соответствующий тип данных в вашем db, который является датой/временем. Передайте параметр даты и времени из asp, и описанная вами проблема была решена. Проблема, о которой я хочу упомянуть, касается того, что поле даты и времени равно точному значению до минуты. Это может вызвать проблемы. Возможно, вам будет лучше иметь поле> = что-то и <что-то еще. –

ответ

1

Если ваша таблица базы данных достаточно мала, вы можете присвоить значение фактическому datetime внутри вашего запроса и передать значение в качестве параметра datetime, поэтому вы сравниваете даты вместо сравнения строк.

Если ваш стол имеет приличное количество записей, не делайте этого, потому что это будет свист производительности.

SELECT top 1 * 
FROM CensusFacility_Records 
WHERE Division_Program = 'Division 1' 
AND cast(JMS_UpdateDateTime as datetime) = @dateParam 

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

Но в любом случае используйте параметризованный SQL вместо передачи в строке, как у вас есть.

+0

Это полезно – Jimmy

1

Формат вашего SQL DateTime на самом деле представляет собой небольшую красную селедку - он может быть отображен любым способом, который выбирает интерфейс (например, Studio Management). Важно то, что ваша переменная date находится в недвусмысленном формате. Имея это в виду, я бы рекомендовал использовать формат даты и времени ISO 8601, например. date.ToString("o") (предполагается, что date - DateTime).

Смежные вопросы