Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2009, 17:42   #1
DS75
Пользователь
 
Аватар для DS75
 
Регистрация: 20.04.2009
Сообщений: 50
По умолчанию datepart в sql

По запросу
Код:
ADOQuery4.SQL.Add('SELECT  Bremj ...
DBGrid отображает таблицу в с полем Bremj. Формат отображения в стоблце Bremj примерно такой 01.05.2009 20.00.00. Как сделать показывало только 20.00.00 ?
Пробовал
Код:
ADOQuery4.SQL.Add('SELECT  datepart(hh,Bremj) ...
Чтобы показал только часы. Ругается на hh.
Кто нибудь решал такую проблему ?

Последний раз редактировалось DS75; 01.05.2009 в 22:16.
DS75 вне форума Ответить с цитированием
Старый 01.05.2009, 20:15   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

какая субд?
возьми доку и почитай какие возможны маски для получения даты/времени - для каждого сервака они немного различаются
soleil@mmc вне форума Ответить с цитированием
Старый 01.05.2009, 22:52   #3
DS75
Пользователь
 
Аватар для DS75
 
Регистрация: 20.04.2009
Сообщений: 50
По умолчанию

Цитата:
Сообщение от soleil@mmc Посмотреть сообщение
какая субд?
MS Access.
Delphi Russian Knowledge Base по этому поводу пишет:
Цитата:
Функции datename, datepart и dateadd получают в качестве аргумента часть даты, т.е. год, месяц, час и т.д. В следующей таблицы перечислены части даты, их сокращения (если оно есть) и возможные целочисленные значения для этой части. Функция datename выдает строку символов там, где это имеет смысл, например, для названия дней недели.

Таблица 10-10: Части даты

Часть даты
Сокращение
Интервал значений

year
yy
1753-9999

quarter
qq
1 - 4

month
mm
1 - 12

week
wk
1 - 366

day
dd
1 - 31

dayofyear
dy
1 - 54

weekday
dw
1 - 7 (Воскресенье 1 день для us_english).

hour
hh
0 - 23

minute
mi
0 - 59

second
ss
0 - 59

millisecond
ms
0 - 999

Заметим, что названия дней недели могут зависеть от установленного языка (language setting).
Цитата:
Общий синтаксис вызова системных функций выглядит следующим образом:

select название_функции(аргумент[ы])
Однако при написании по этим правилам выдает ошибку
DS75 вне форума Ответить с цитированием
Старый 02.05.2009, 11:45   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я бы рекомендовал использовать функцию FORMAT:
Format(MyTime, "hh:mm:ss"):
Код:
SELECT Операции.*, Format([Дата операции], "hh.mm.ss") as TimeOnly
FROM Операции;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.05.2009, 12:45   #5
DS75
Пользователь
 
Аватар для DS75
 
Регистрация: 20.04.2009
Сообщений: 50
По умолчанию

После долгих поисков...
Код:
ADOQuery4.SQL.Add('SELECT datepart("d",Zakaz.Bremj)&"-"&datepart("h",Zakaz.Bremj)&":"&datepart("n",Zakaz.Bremj)&":"&datepart("s",Zakaz.Bremj)as Bremj, Nazvanie_bluda, Kolvo, Cena');
Преобразует в такое 31-23:59:59

З.Ы. Заказ - таблица, а Бремя - столбец в таблице....
DS75 вне форума Ответить с цитированием
Старый 02.05.2009, 12:52   #6
DS75
Пользователь
 
Аватар для DS75
 
Регистрация: 20.04.2009
Сообщений: 50
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
я бы рекомендовал использовать функцию FORMAT:
Format(MyTime, "hh:mm:ss"):
Код:
SELECT Операции.*, Format([Дата операции], "hh.mm.ss") as TimeOnly
FROM Операции;
Спасибо, совет хороший, но не подходит.
Я тоже думал насчет форматирования. Но строки из таблицы могут еще понадобиться, а если я переформатирую, то потеряю данные (год, месяц, число). Тем более SQL предоставляет возможность выборочного отображения данных для дат.
Посмотрите мое решение - по моему круто ! Громоздко, но зато без потерь

Последний раз редактировалось DS75; 02.05.2009 в 12:55.
DS75 вне форума Ответить с цитированием
Старый 02.05.2009, 14:17   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
понадобиться, а если я переформатирую, то потеряю данные (год, месяц, число).
что за глупости?! а в Вашем запросе Вы не теряете месяц и год?!?!!!!
вместо всего Вашего кода достаточно написать

Код:
... Format(Zakaz.Bremj, "dd-hh:mm:ss")...
нет, если Вам хочется получить тоже самое, только намного сложнее - пожалуйста! Только я не понимаю, что это Вам даёт...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.05.2009, 15:16   #8
DS75
Пользователь
 
Аватар для DS75
 
Регистрация: 20.04.2009
Сообщений: 50
По умолчанию

Да, это громоздко, но в моем варианте формат даты не меняется! Меняется только вид его отображения с 31.12.2009 23.59.59 на 31-23.59.59.
А в вашем варианте
Код:
.. Format(Zakaz.Bremj, "dd-hh:mm:ss")...
DBGrid1.SelectedField.AsString из полученной таблицы будет содержать 31.12.2009 23.59.59 или 31-23.59.59 ?
DS75 вне форума Ответить с цитированием
Старый 02.05.2009, 17:49   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я понял, в чём у Вас проблема...
Вас запутало слово Format...

нет. формат даты НЕ ИЗМЕНЯЕТСЯ. Это функция, которая возращает строку, что будет в этой строке - зависит от параметров, которые Вы передаёте в данную функцию (туда можно передавать и числа и даты и прочее).
а функция форматирует переданные значения по шаблону (второй параметер функции) и возращает СТРОКУ.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.05.2009, 18:23   #10
DS75
Пользователь
 
Аватар для DS75
 
Регистрация: 20.04.2009
Сообщений: 50
По умолчанию

А, понятно...
Да смутило именно слово format.
Попробовал ваш вариант и решил остановиться на нем !
Он намного компактнее. Спасибо !
DS75 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
sql Neymexa Помощь студентам 1 03.03.2009 12:21
sql или не sql Diamand SQL, базы данных 9 18.09.2008 17:17
sql mma БД в Delphi 2 11.04.2008 15:06
Запросы SQL и PL/SQL sharpest Фриланс 1 05.02.2008 18:58
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15