Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.28;
Скачать: [xml.tar.bz2];




Вниз

Вопрос по полб DateTime 


alexts   (2002-01-30 16:57) [0]

Привет мастерам!!! Подскажите плиз как красиво отделить от поля DateTime дата+часы и дата



alexts   (2002-01-30 16:59) [1]

Маленькая оговорочка - поле должно остаться datetime или smalldatetime



oname   (2002-01-30 17:06) [2]

Целая часть - это дата, дробная - время.



Johnmen   (2002-01-30 17:10) [3]

var dt, dt1, dt2 : TDateTime;
.....

dt1:=TDateTime(Trunc(dt)); // это дата
dt2:=dt1+<выкусить часы из dt>; // дата+часы



Fareader   (2002-01-30 17:24) [4]

а если так
var dat_e:Tdate; T_ime:TTime;

....
date:=query1.fieldbyname("dff").asdatetime;
time:=query1.fieldbyname("dff").asdatetime;



Belov   (2002-01-30 17:39) [5]

есть такая функция DecodeDate



alexts   (2002-01-30 17:58) [6]

все ок. все варианты хороши но мне надо в запросе sql-ом



Johnmen   (2002-01-30 18:15) [7]

Попробуй :
SELECT
CAST(f1 AS INT) AS fld1, // дата
(CAST((CAST(f1 AS FLOAT))*24 AS INTEGER))/24) AS fld2
// дата+часы
FROM Table1

возможно работать не будет, но это лишь идея...



Roma   (2002-01-30 19:10) [8]

В MSSQL есть функция DatePart... См. в BOL...



Fay   (2002-01-31 16:05) [9]

Если MSSQL то Дата = CONVERT(datetime, CONVERT(int, SUBSTRING(CONVERT(binary(8), <ДатаВремя>), 1, 4))))



alexts   (2002-01-31 21:34) [10]

2Fay Как насчет даты и часа?



TSV   (2002-01-31 22:34) [11]

Смотри Roma © (30.01.02 19:10).



kig   (2002-01-31 22:39) [12]

Дата

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 + время



kig   (2002-01-31 22:47) [13]

Сорри

Дата

Строку
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



Fay-1   (2002-02-01 01:15) [14]

2 alexts
Если MSSQL
то Время = CONVERT(datetime, CONVERT(int, SUBSTRING(CONVERT(binary(8), <ДатаВремя>), 5, 4))



alexts   (2002-02-01 10:11) [15]

Я конечно дико извиняюсь, наверное не умею объяснить. Попробую еще раз:

1. Есть БД MSSQL 7.0
2. Есть таблица Table1
3. Поля в таблице d1 типа datetime и s1 типа numeric (9,2)
4. d1- дата и время чека s1 - сумма чека (например)
5. За период с .. по .. в разрезе по часам получить суммы продаж

Вух :)))

Вроде нормально
Ребята помогите а?



TSV   (2002-02-01 11:03) [16]


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)

Удачи.



panov   (2002-02-01 11:08) [17]

>alexts © (01.02.02 10:11)
При создании Topic (создании вопроса) в этой ветке форума, на форме есть кнопочки - для каких БД задается вопрос, и для какой версии Delphi. Если бы был выбран MSSQL, то последний ответ был бы получен сразу.



TSV   (2002-02-01 11:24) [18]

Просто человек не умеет вопросы задавать. Ему надо было сразу писАть вот так: alexts © (01.02.02 10:11).



Fareader   (2002-02-01 11:25) [19]

Я не силен в 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:31) [20]

А зачем велосипед изобретать?
Кроме того, в MSSQL 7 нет UDF. Они появились только в MSSQL 2000.



Johnmen   (2002-02-01 14:37) [21]

>TSV © : что лишний раз подтверждает мысль об отстойности продуктов от MS (извините, кого обидел)...




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.28;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.037 c
1-90572           stx                   2002-02-12 09:31  2002.02.28  
есть ли в DELPHI аналог Collections (BP7)


7-90675           LelikK                2001-11-25 21:41  2002.02.28  
Как изменить системную дату?


7-90690           Asdf622               2001-11-23 11:48  2002.02.28  
Async Professional 3.00 и IRQ - ???


7-90671           Лина                  2001-11-20 21:09  2002.02.28  
Как полностью захватить все ресурсы процессора ?


3-90468           VIB                   2002-02-01 17:27  2002.02.28  
SQL+