Ваш формат и ваша строка не согласны.
Вам нужно 0 перед 4, вот так: 04/20/2012
.
Или вам нужно настроить свой формат, например:
M/D/YYYY
На второй взгляд, то to_date()
documentation не показывает поддержку одного M
. Вам нужно включить ведущий 0 с вашим месяцем, а один D
за день будет крайне глупым.
Обновление на основе вашего комментария. Позвольте мне привести, однако, сказать, что использование конкатенации строк для замещения данных в таких запросах evil и, вероятно, приведет к взлому вашего приложения.
Dim queryString As String = "select * from smsdw.lot_act where (tran_dttm <= to_date('" & bdp1.ToString("MM/dd/yyyy") & "','MM/DD/YYYY') and tran_dttm > to_date('" & bdp1.ToString("MM/dd/yyyy") & "' ,'MM/DD/YYYY')"
В качестве бонуса, делает ли это право прочь избежать необходимости беспокоиться о форматах дат на всех:
Dim queryString As String = "select * from smsdw.lot_act where tran_dttm <= :bdp1 and tran_dttm > :bdp1 "
command.Parameters.Add(":bdp1", SqlDbType.DateTime).Value = bdp1
Но опять-таки: различные библиотеки могут справиться с этим немного отличаются. Некоторым требуется символ :
, некоторые его не позволяют, а некоторые работают над порядком, а не по имени (что означает, что вам нужно будет добавить параметр дважды).
мой вход, который я вставляю из основного выбора даты, читается как дата, а не строка, но в моем db находится строка, поэтому мне нужно преобразовать свой ввод как строку. – Husna5207
Ваш запрос верный. В чем проблема? – Ben
если я хочу найти дату '4/19/2012' да, я могу получить результат. но если я хочу перефразировать его как параметр, я не могу. это запрос от oracle. – Husna5207