![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по полб DateTime
alexts © (2002-01-30 16:57:00)Привет мастерам!!! Подскажите плиз как красиво отделить от поля DateTime дата+часы и дата
Johnmen (2002-02-01 14:37:00) [1]>TSV © : что лишний раз подтверждает мысль об отстойности продуктов от MS (извините, кого обидел)...
TSV (2002-02-01 11:31:00) [2]А зачем велосипед изобретать?
Кроме того, в MSSQL 7 нет UDF. Они появились только в MSSQL 2000.
Fareader (2002-02-01 11:25:00) [3]Я не силен в MSSQL, но может попробовать написать свою UDF, чтобы она разрезала DateTime на части, а потом чего-то такое:
select date_func(datetime,date) as dd, date_func(datetime,time) as tt
from ....
where ...
order by 1,2
TSV (2002-02-01 11:24:00) [4]Просто человек не умеет вопросы задавать. Ему надо было сразу писАть вот так: alexts © (01.02.02 10:11).
panov (2002-02-01 11:08:00) [5]>alexts © (01.02.02 10:11)
При создании Topic (создании вопроса) в этой ветке форума, на форме есть кнопочки - для каких БД задается вопрос, и для какой версии Delphi. Если бы был выбран MSSQL, то последний ответ был бы получен сразу.
TSV (2002-02-01 11:03:00) [6]
SELECT DATEPART(YEAR, D1) AS "YEAR", DATEPART(MONTH, D1) AS "MONTH", DATEPART(DAY, D1) AS "DAY", DATEPART(HOUR, D1)AS "HOUR", SUM(S1) AS "SUMMA" FROM TABLE1
GROUP BY DATEPART(YEAR, D1), DATEPART(MONTH, D1), DATEPART(DAY, D1), DATEPART(HOUR, D1)
Удачи.
alexts (2002-02-01 10:11:00) [7]Я конечно дико извиняюсь, наверное не умею объяснить. Попробую еще раз:
1. Есть БД MSSQL 7.0
2. Есть таблица Table1
3. Поля в таблице d1 типа datetime и s1 типа numeric (9,2)
4. d1- дата и время чека s1 - сумма чека (например)
5. За период с .. по .. в разрезе по часам получить суммы продаж
Вух :)))
Вроде нормально
Ребята помогите а?
Fay-1 (2002-02-01 01:15:00) [8]2 alexts
Если MSSQL
то Время = CONVERT(datetime, CONVERT(int, SUBSTRING(CONVERT(binary(8), <ДатаВремя>), 5, 4))
kig (2002-01-31 22:47:00) [9]Сорри
Дата
Строку
CONVERT(getdate(), CONVERT(datetime, CHAR(10), 121)) -- в datetime (time = 00:00:00.000
заменить на
CONVERT(datetime, CONVERT(datetime, CHAR(10), 121)) -- в datetime (time = 00:00:00.000
kig (2002-01-31 22:39:00) [10]Дата
CONVERT(getdate(), CHAR(10), 121) -- в char(10)
CONVERT(getdate(), CONVERT(datetime, CHAR(10), 121)) -- в datetime (time = 00:00:00.000)
Время
SUBSTRING(CONVERT(CHAR(23), getdate(), 121), 11, 13) -- varchar
CONVERT(datetime, SUBSTRING(CONVERT(CHAR(23), getdate(), 121), 11, 13)) -- в datetime - 1900-01-01 + время
TSV (2002-01-31 22:34:00) [11]Смотри Roma © (30.01.02 19:10).
alexts (2002-01-31 21:34:00) [12]2Fay Как насчет даты и часа?
Fay (2002-01-31 16:05:00) [13]Если MSSQL то Дата = CONVERT(datetime, CONVERT(int, SUBSTRING(CONVERT(binary(8), <ДатаВремя>), 1, 4))))
Roma (2002-01-30 19:10:00) [14]В MSSQL есть функция
DatePart... См. в BOL...
Johnmen (2002-01-30 18:15:00) [15]Попробуй :
SELECT
CAST(f1 AS INT) AS fld1, // дата
(CAST((CAST(f1 AS FLOAT))*24 AS INTEGER))/24) AS fld2
// дата+часы
FROM Table1
возможно работать не будет, но это лишь идея...
alexts (2002-01-30 17:58:00) [16]все ок. все варианты хороши но мне надо в запросе sql-ом
Belov (2002-01-30 17:39:00) [17]есть такая функция DecodeDate
Fareader (2002-01-30 17:24:00) [18]а если так
var dat_e:Tdate; T_ime:TTime;
....
date:=query1.fieldbyname("dff").asdatetime;
time:=query1.fieldbyname("dff").asdatetime;
Johnmen (2002-01-30 17:10:00) [19]var dt, dt1, dt2 : TDateTime;
.....
dt1:=TDateTime(Trunc(dt)); // это дата
dt2:=dt1+<выкусить часы из dt>; // дата+часы
oname (2002-01-30 17:06:00) [20]Целая часть - это дата, дробная - время.