Форум: "Базы";
Текущий архив: 2003.02.27;
Скачать: [xml.tar.bz2];
ВнизКак правильно написать дату в запросе? Найти похожие ветки
← →
coba (2003-02-07 15:58) [0]Уважаемые мастреа, как правильно в SQL запросе написать дату??
просто
Select *
From Table
WHERE date="01.01.2003" не проходит, говорит тип не соответствует... как строку перевести в DateTime?
Динамически в запрос подставлять ничего не нужно...
← →
Danilka (2003-02-07 16:03) [1]попробуй вот так:
WHERE date="01.01.2003"
← →
Max Zyuzin (2003-02-07 16:04) [2]Работать с датой как с датой, через параметр
Select *
From Table
WHERE Table."date"= :mydate
И дальше Query.ParamByName("mydate").AsDate := now;
ЗЫ Советую не называть поля и таблицы зарезервироваными словами (date)
← →
iZEN (2003-02-07 16:09) [3]Проблемы с локализацией возможны.
Можно применять универсальный формат: "dd-mmm-yyyy"
(01-JAN-2003).
Лучше всё досконально протестировать в разных локалях, например на строке: "29-FEB-2003" и "29.02.2003" и т.д., а то приложение сможет работать только в России...
← →
coba (2003-02-07 16:12) [4]Danilka © (07.02.03 16:03)
не работает
Max Zyuzin © (07.02.03 16:04)
пример который я написал - просто пример...
Динамически ничего формировать не нужно, т.е. один раз в статический запрос нужно написать дату и все... можно конечно посмотреть как выглядит дата в числовом виде, т.е например 01.12.2002 это 37561 в формате DateTime, но мне интересно как правильно написать дату в запросе...
← →
coba (2003-02-07 16:15) [5]iZEN ©
Вот я и спрашиваю чем преобразовать строку в дату...
В MSSQL это Cast, в dbase я не знаю... нет под руками справки...
← →
Max Zyuzin (2003-02-07 16:17) [6]>coba (07.02.03 16:12)
Параметром.
← →
coba (2003-02-07 16:23) [7]Max Zyuzin ©
Параметром нехочется...
Пока написал в лоб... т.е. дату в формате даты :)
← →
Max Zyuzin (2003-02-07 16:25) [8]>coba (07.02.03 16:23)
Дело в том, что у тебя с таким подходом программа будет зависить от настроек OS какой формат там стоит такой тебе и надо писать запрос, в общем это фигово :) т.к. на разных тачках может и не работать (из за того что я и написал).
← →
coba (2003-02-07 16:32) [9]Max Zyuzin ©
Все гораздо проще :)
я всего-лишь перекачиваю нужные данные из старой базы в MSSQL
Программа будет работать только у меня...
← →
Max Zyuzin (2003-02-07 16:33) [10]>coba (07.02.03 16:32)
Так ты запрос к какой базе делаешь? К фокспровой или к MSSQL???
← →
coba (2003-02-07 16:35) [11]Max Zyuzin ©
К фоксовой конечно...
С MSSQL у меня проблем нет...
← →
sniknik (2003-02-07 16:37) [12]coba (07.02.03 16:35)
если даты передаеш не параметром, то будут. не у тебя так у клиентов.
← →
Max Zyuzin (2003-02-07 16:39) [13]>coba (07.02.03 16:35)
Тады сделай такую штуку...
Label1.Caption := DateToStr(now);
И в таком виде и забивай дату в запросе
← →
Danilka (2003-02-07 16:39) [14]в начале программы делаешь вот так:
ShortDateFormat:="dd.mm.yyyy";
только, все это как-то некрасиво...
← →
coba (2003-02-07 16:39) [15]sniknik ©
У клиентов точно не будут...
Потому как пользоваться программой буду только я...
← →
sniknik (2003-02-07 16:39) [16]извини не заметил
> Программа будет работать только у меня...
тогда без разницы, настройки наверняка одинаковые ставиш даже если винды переинсталируеш.
← →
coba (2003-02-07 16:46) [17]Danilka ©
Неработает...
дело не в том какая дата dd.mm.yyyy или mm.dd.yyyy или еще какая,
дело в том что не хочет он строку принимать, говорит тип не тот... если число подставить к примеру 37561 (01.11.2002) то все нормально...
← →
Max Zyuzin (2003-02-07 16:49) [18]>coba (07.02.03 16:46)
Max Zyuzin © (07.02.03 16:39) - что на это выдает?
← →
coba (2003-02-07 16:52) [19]Max Zyuzin ©
Я сейчас делаю примерно это... работает нормально , но кроме запроса в программе я смотрю вообще что в базе лежит, соответственно пишу запросы, смотрю где сколько мусора и т.д...
поэтому так работать не прикольно ,все время ручками дату конвертировать а потом ее в запросе использовать...
← →
coba (2003-02-07 16:59) [20]Max Zyuzin ©
Вернее я не совсем так делаю... я беру str(StrToDate(Now):10:0)и пожставляю то что получилось...
← →
coba (2003-02-07 17:00) [21]Max Zyuzin ©
Совсем зарапортовался...
str(StrToDate("01.01.2003"):10:0)
← →
Max Zyuzin (2003-02-07 17:03) [22]>coba (07.02.03 16:52)
Я тебе это написал только для того, что бы ты узнал как у тебя на компьютере дата сделоана, в смысле какой у нее формат, а запросы ты уже будешь делать используя этот формат. Все же что у тебя выдает?
← →
sniknik (2003-02-07 17:06) [23]так не пробовал?
SELECT * FROM DATYEAR WHERE DAT = "31.12.2003 "
← →
sniknik (2003-02-07 17:08) [24]в хелпе так написано.
← →
Reals (2003-02-07 17:16) [25]Можно еще так попробовать:
Select *
From Table
WHERE date=CONVERT(datetime, "01.01.2003")
← →
coba (2003-02-07 17:18) [26]sniknik ©
пробовал - не работает...
← →
coba (2003-02-07 17:24) [27]Reals ©
Говорит что не знает функцию CONVERT
← →
sniknik (2003-02-07 17:30) [28]ну м не менее перебери варианты. (зависит от настроек твоей машины, модет день и месяц поменять)
хелп
Example of a date literal in a US format:
SELECT *
FROM Orders
WHERE (SaleDate <= "1/23/1998")
Example of the same date literal in a European format:
SELECT *
FROM Orders
WHERE (SaleDate <= "23.1.1998")
Leading zeros for the month and day fields are optional.
If the century is not specified for the year in a date value, the BDE settings FOURDIGITYEAR and YEARBIASED control the century of the date.
← →
sniknik (2003-02-07 17:32) [29]coba (07.02.03 17:24)
в локал SQL CAST заместо
хелп
SELECT SaleDate,
SUBSTRING(CAST(CAST(SaleDate AS DATE) AS CHAR(10)) FROM 1 FOR 1)
FROM Orders
← →
coba (2003-02-07 17:42) [30]sniknik ©
fox Cast не понимает...
стрингу брать не хочет... короче ну его ...
пусть ест сконвертрованные вручную даты...
← →
coba (2003-02-07 17:52) [31]Max Zyuzin ©
дата на компе у меня dd.mm.yyyy, дело не в формате представления даты и времени а в том, почему в запрос нельзя просто поставить дату, обязательно нужно подставлять ее в формате datetime...
сорри за задержку...
← →
coba (2003-02-07 17:55) [32]Ладно, всем спасибо за ответы, ну его этот фокс вместе с дбейсом...
← →
sniknik (2003-02-07 17:56) [33]> fox Cast не понимает
хочеш сказать что все время про фокс говорил? то есть не из дельфей а из фокса проверяеш? !!!!!!
ну, ну а где это в вопросе стоит? тебе все отвечают по дельфям Local SQL.
← →
sniknik (2003-02-07 18:04) [34]в ФОКСЕ формат дат {23/1/1998} (американский)
← →
coba (2003-02-07 18:06) [35]sniknik ©
Я из дельфей запросы делаю...
На сколько я понимаю, какие SQL команды поддерживает СУБД, те команды и проходят...
фокс не понимает CAST, в запросе который я вставляю из дельфи, на CAST реакция отрицательная...
← →
sniknik (2003-02-07 18:20) [36]ты что думаеш SQL он один на всех? наивный.
и дельфи подключается по разному и к разным драйверам. и в зависимости от драйвера/способа все может 1000 раз поменятся. а вот этой важной инфы ты не предоставил, в результате никакого результата.
где ты пишеш о своей СУБД? и драйвере. А то может только я не заметил.
← →
coba (2003-02-07 18:27) [37]sniknik ©
СУБД и версия дельфи указаны в названии топика...
Как правильно написать дату в запросе? [D5, dBase, FoxPro]
← →
sniknik (2003-02-07 18:42) [38]и первым же ответом, был правильный
Danilka © (07.02.03 16:03)
попробуй вот так:
WHERE date="01.01.2003"
для локал SQL (BDE) еще раз повторюсь, для ADO + Jet или ODBC - VFoxpro - MSdBase - .... для когото может быть неправильно. (ADO это тоже не последний способ)
результат вместо конкретного описания, бессмысленная полемика. если у тебя Local SQL то и первый вариант прошол бы (ну может день и месяц поменял бы) и CAST работал бы.
Значит чтото другое, или обманываеш.
← →
coba (2003-02-07 18:49) [39]sniknik ©
Нет, я сперва попробовал по всякому, а потом на форум полез...
Простой стринг не проходит - говорит тип данных не тот, если поставить "01.01.2003" тоже не проходит...
проходит только если дату поставить в ее нормальном виде, т.е. к примеру 37561...
← →
sniknik (2003-02-07 18:52) [40]а хотя бы что говорит, ошибку, мог привести?
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2003.02.27;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.007 c