Имя: Пароль:
1C
1C 7.7
v7: 1С 7.7 - Дата и время в запросе SQL
, , ,
0 Mary01
 
12.01.16
11:09
Добрый день!

Пожалуйста, подскажите, как в запросе получить Дату + Время?
Есть таблица в SQL, в таблице - поле Date_time, тип Datetime.
В этом поле есть значение:

2016-01-12 12:03:34.000

Запрос в 7.7:

|SELECT
|Zakaz.date_time
|FROM Zakaz

Затем получаю: ДатаДок = RecordSet.Fields("date_time").Value;
результат:  '12.01.16'

А нужно, чтобы была и дата, и время.
1 Serginio1
 
12.01.16
11:12
Используй Cast Convert така как в 7 ке дата без времени
https://msdn.microsoft.com/ru-ru/library/ms187928(v=sql.120).aspx
2 cw014
 
12.01.16
11:13
Раздели отдельно на дату и отдельно на время. У 7.7 нет понятия даты-время, есть только дата
3 Рэйв
 
12.01.16
11:13
cast в строку попробуй
4 Mikeware
 
12.01.16
11:17
получай Datepart() от даты-времени, отдельно для часов, минут, секунд, микросекунд  если надо, и собирай в строку вручную.
Если надо перевести в семерочное время и упаковать, скажем, в Date_Time_Iddoc - переводи в число микросекунд с начала дня, и преобразоывывай в 36-ричную.
5 Mikeware
 
12.01.16
11:18
(2) понятия времени - нет. а дата-время - применяется внутри базы.
6 Serginio1
 
12.01.16
11:19
SELECT CONVERT(char(19),Zakaz.date_time,121)
7 trdm
 
12.01.16
11:19
|SELECT
        |   DATEPART(hour, GETDATE()) as hour
        |   ,DATEPART(minute, GETDATE()) as minute
        |   ,DATEPART(year, GETDATE()) as year
        |   ,DATEPART(month, GETDATE()) as month
        |   ,DATEPART(day, GETDATE()) as day
8 Mary01
 
12.01.16
11:20
делала |cast(Zakaz.date_time as datetime) as date_time

но результат тот же
9 Serginio1
 
12.01.16
11:23
(8) 1 Читал. В 7 ке дата без времени. Только приведение к строке тебе поможет
http://stackoverflow.com/questions/32049341/converting-datetime-in-sqlserver-like-yyyy-mm-dd-hhmiss-to-yyyy-mm-dd-235959
10 trdm
 
12.01.16
11:25
А так:
|SELECT TOP 100
|   DATEPART(hour, Zakaz.date_time) as hour
|   ,DATEPART(minute, Zakaz.date_time) as minute
|   ,DATEPART(year, Zakaz.date_time) as year
|   ,DATEPART(month, Zakaz.date_time) as month
|   ,DATEPART(day, Zakaz.date_time) as day
|FROM Zakaz
11 trdm
 
12.01.16
11:26
(9) У нее нетипичная семерошная таблица.
Скорее всего какой-то самопал.
О чем свидетельствует название таблицы "Zakaz"
Так что клюшки тут исключительно как среда.
12 Mikeware
 
12.01.16
11:29
(11)она просто читает из внешней базы.
13 trdm
 
12.01.16
11:29
(12) О том и речь.
14 trdm
 
12.01.16
11:30
Так лучше
|SELECT TOP 100
|    CONVERT(CHAR(19), Zakaz.date_time, 20) as Date
|FROM Zakaz
15 Serginio1
 
12.01.16
11:30
(11) Он читает из внешней базы. А в 7 ке уже отбрасывается время.
16 Serginio1
 
12.01.16
11:31
(14) Уже в 6 дал ответ. Правда там с миллисекундами
17 trdm
 
12.01.16
11:32
И что? Чукча не читатель, чукча писатель :)
18 Mikeware
 
12.01.16
11:34
(0) вообще, а зачем нужно это время? что с ним будешь дальше делать?
19 Serginio1
 
12.01.16
11:35
(17) А вообще ответ дан в 2. Но согласен, иногда лень все читать. Сам такой.
20 Serginio1
 
12.01.16
11:37
(18) Например УстановитьВремя() для документа
21 Mikeware
 
12.01.16
12:01
(20) если средсвами 1с - тогда (7).
Если напрямую - тогда (4).
22 Serginio1
 
12.01.16
13:07
(21) А может ему нужно сохранить дату и время внешнего документа, для дальнейшего обмена? Можно только гадать, что ему нужно
23 Mikeware
 
12.01.16
13:07
(22) поэтому остается только ТКВ
24 Mary01
 
12.01.16
13:18
(12) да, именно так
25 Mary01
 
12.01.16
13:25
(18) чтобы создать документ, в котором будет это время, а не только дата
26 Mary01
 
12.01.16
13:26
(17) это кому? )
27 Mikeware
 
12.01.16
13:31
(25) тогда - (7), (10), или (14) как строка
28 Mary01
 
12.01.16
16:31
Получилось как в (7), получила час, минуту и секунду.
Затем делаю:
Док.УстановитьВремя(Час, Минута, Секунда);
Не устанавливается!
Присваивает другое время.
29 Mary01
 
12.01.16
16:32
(28) Это у нового документа. время присваивается при записи.
30 Serginio1
 
12.01.16
17:15
А записать() ?
31 Mary01
 
12.01.16
18:25
(30) Это есть.
До записать()  у документа еще нет никакого времени, несмотря даже на то, что я присваиваю конкретное время.
А после записать() - время появляется, но совсем другое присваивается автоматически ((
32 MadJhey
 
12.01.16
18:39
(31) АвтоВремяОтключить()
33 Mary01
 
12.01.16
19:09
(32) А вот эта штука АвтоВремяОтключить() - работает только для текущего документа или для всех последующих тоже?
34 Mary01
 
12.01.16
19:15
Получилось!

Док.Новый();
Док.ДатаДок = ДатаДок;
Док.АвтоВремяОтключить();
Док.УстановитьВремя(Час, Минута, Секунда);
Док.Записать();

В итоге у документа установлено именно то время, которое нужно.

Всем спасибо!
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.