Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос / 5 сообщений из 5, страница 1 из 1
17.08.2004, 15:40
    #32653151
Alex Is
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
Доброго времени суток!!
У меня такой вопрос! Можно ли выполняя сквозной запрос в курсоре получать столбец с типом datetime при этом убирая время которое сидит после даты(по дефолту 12.00АМ)!
Вот кусочек:

....... "ltrim(convert(datetime(10), kniga.bla_bla,104)) AS bla_bla_bla" + ; .....

Поле kniga.bla_bla на сервере имеет тип datetime! Если оставить так как есть, то вместо ожидаемого 10.12.2000(в курсоре) получается Dec 10 2000!
Как получить 10.12.2000??

Большое спасибо!
...
Рейтинг: 0 / 0
18.08.2004, 15:10
    #32655029
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
Если делать через Remote View, то там можно просто ЯВНО указать, что данные должны быть типа Date, хотя исходные данные имеют тип DateTime.

Ну, а то, что у тебя символьная строка "10.12.2000" была прочитана как "Dec 10 2000", так этого просто не может быть!

Как именно ты читаешь полученный курсор? Где-то произошла конвертация строки в поле типа Date. Или вместо ключа 104 был использован ключ 109.

Кстати, LTRIM() в данном случае не имеет смысла.
...
Рейтинг: 0 / 0
18.08.2004, 16:47
    #32655308
Alex Is
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
авторЕсли делать через Remote View, то там можно просто ЯВНО указать, что данные должны быть типа Date, хотя исходные данные имеют тип DateTime. Это понятно! Но у меня другая ситуация! У меня в фоксе идет сквозной запрос к таблицам на SQL сервере!

Код: plaintext
...(convert(datetime( 10 ), kniga.bla_bla, 104 )) AS bla_bla_bla" + ; ....
Этим выражением я пытался получить из поля в таблице с типом(datetime) голую дату, уже без времени!!! Т.е отсечь время(получито вместо 10.12.2000 12.00АМ просто 10.12.2000) Вместо этого я получал Dec 10 2000!

Как решить эту проблему!!!
Так как в дальнейшем мне надо сравнивать эту самую дату и дату полученную из "какой-либо формы"! Даты сравниваются так как я перевожу дату полученную из формы в datetime!!!(DTOD) И там и там время по дефолту стоит 12.00АМ!!!
Но вопрос остается открытым мне просто интересно как можно вытащить голую дату!

БОЛЬШОЕ СПАСИБО!!!
...
Рейтинг: 0 / 0
18.08.2004, 17:25
    #32655428
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
Ну, так у тебя ошибка в команде. Надо писать так:

CONVERT( char(10) ,kniga.bla_bla, 104 )

А ты пытался конвертировать из DateTime снова в DateTime. Не то, чтобы этого делать было нельзя, но результат видимо зависит от настройки

SET DATEFORMAT

В MS SQL нет такого типа данных, как голая дата без времени. Единственный выход - это получить символьную строку.

Но! Это делать тебе НЕ НУЖНО!

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

Исходя из предположения, что ты нигде не записываешь на MS SQL время, только дату, можно предположить, что ВСЕ поля DateTime будут иметь время 12:00 AM (что вообще-то странно, обычно по умолчанию полночь устанавливается, а не полдень, но Вам виднее). Ну, так и добавь к введенной пользователем дате 12 часов и так напрямую и сравнивай!

Добавить 12 часов можно так:

?DTOT(MyDate)+12*60*60*1000

Если же все-таки время может быть, то вместо простого равенства сделай BETWEEN где указывай дату в диапазоне одних суток

fromDate = DTOT(MyDate)-12*60*60*1000+1
toDate = DTOT(MyDate)+12*60*60*1000-1

kniga.bla_bla BETWEEN fromDate AND toDate
...
Рейтинг: 0 / 0
18.08.2004, 17:52
    #32655492
Alex Is
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
авторНу, так у тебя ошибка в команде. Надо писать так:

CONVERT(char(10),kniga.bla_bla,104)

А ты пытался конвертировать из DateTime снова в DateTime. Не то, чтобы этого делать было нельзя, но результат видимо зависит от настройки
Согласен! Но это не ошибка! Я получал "нормальный" char (10.10.2000), но это char, а мне нужен был обыкновенный date!

авторВ MS SQL нет такого типа данных, как голая дата без времени. Единственный выход - это получить символьную строку.

Обидно что нельзя сделать этого вообще по типу:
Код: plaintext
CONVERT([FIXED]date[/FIXED]( 10 ),kniga.bla_bla, 104 )
Ок! БОЛЬШОЕ Спасибо, я получил ответ на свой вопрос!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]