Проблема с форматом даты SQL в выбранном запросе

У меня есть страница ASP, которая будет извлекать записи из таблицы базы данных SQL-сервера. В таблице order_master есть поле с именем order_date. Я хочу создать запрос выбора, чтобы получить дату заказа> дату, введенную пользователем (например: 01.07.2008)

Я пробовал использовать convert и cast, но оба не работают. Образец данных в столбце order_date - 10.04.2008 20:27:41. На самом деле я не знаю, что это за тип (varchar / datetime).

Есть ли способ это сделать?

Где вы проводите сравнение, в SQL или ASP?

Brettski 15.10.2008 23:03

Тип будет иметь значение. Если это datetime в базе данных, вам нужно преобразовать то, что пользователь вводит, в datetime, чтобы сравнение работало. Если это строка, необходимо преобразовать обе. Обратите внимание, что при сравнении реальных значений даты и времени будет учитываться ВРЕМЯ, поэтому, если вы не установите время, будет полночь.

Nikki9696 15.10.2008 23:08

государственный язык, используемый на странице ASP, VBScript / JScript?

AnthonyWJones 16.10.2008 13:12
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
3
12 954
6

Ответы 6

Вы можете создать такую ​​хранимую процедуру

CREATE PROCEDURE GetOrders
    @OrderDate DATETIME
AS
SELECT
    *
FROM order_master
WHERE Order_Date > @OrderDate

GO

Затем вы можете просто преобразовать вводимые пользователем данные в дату перед вызовом хранимой процедуры через свой код ASP.

Редактировать

Я только что заметил замечание о типе столбца, вы можете запустить эту команду

sp_help order_master

чтобы получить информацию о столбце, чтобы найти тип данных order_date.

Вы пробовали преобразовать значения и то и другое в тип datetime с помощью CONVERT ()?

преобразование и кастинг я пробовал. но не удалось! при печати на странице я должен использовать значение базы данных «4/10/2008» с 8:27:41 PM до 4/10/200

Chris Jester-Young 15.10.2008 23:10

Я бы сначала проверил, является ли тип данных SQL DateTime или SmallDateTime, а затем проверю, чтобы убедиться, что вы передаете значение Date / DateTime со страницы.

Если оба значения верны, вам, вероятно, будет лучше последовать совету Джоэла и явно преобразовать оба значения в даты, прежде чем пытаться сравнить. Также проверьте точность значений времени, на которые вы смотрите; это кажется очевидным, но 01.01.2008 12: 00: 00.001 AM не будет равно 01.01.2008 12: 00: 00.000 AM. Да, я говорю по опыту. :П

дата 07/01/2008 - это британская / французская аннотация, поэтому все, что вам нужно сделать, это:

SELECT myColumn FROM myTable WHERE myDateField >= convert(datetime, '07/01/2008 00:00:00', 103)

этот код получит все строки, где myDateField имеет дату 7 января 2008 года, начиная с 00:00:00 (чч: мм: сс), так что первая секунда в этот день ... простыми словами, весь день.

для получения дополнительной информации, проверить книги в Интернете на MSDN

Помните, что при сравнении дат, 10.04.2008 20:27:41 нет равно 10.04.2008. SQL Server интерпретирует 4/10/2008 как означающее 4/10/2008 12:00:00 AM и выполнит сравнение точный с точностью до секунды. Следовательно, 10.04.2008 МЕНЬШЕ, ЧЕМ 10.04.2008 20:27:41

Вы заявляете, что не знаете тип поля. Это будет первая проблема, которую нужно решить, узнайте. Вы можете сделать это с помощью: -

SELECT DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Order_Master' AND
    COLUMN_NAME = 'Order_Date'

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

Тот факт, что вас беспокоит «формат» даты, указывает на то, что вы можете строить SQL, используя конкатенацию. Если да, прекратите это делать. Используйте команду с параметром и передайте дату как тип даты.

Теперь ваша проблема заключается в том, как дата вводится на стороне клиента и переводится в однозначный формат, который может быть проанализирован как дата в коде ASP.

Если это не то, что вы решили, добавьте комментарий к этому ответу, и я расширю этот ответ.

Другие вопросы по теме