![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL запрос. [D7, XP]
fluxion © (2008-05-07 06:25:00)1. Есть таблица (Table1), в одном из полей (DateTime) идет запись в виде 12.03.2008 12:35 и т.д. различные даты время. Как при помощи sql запроса преобразовать это поле в вид 12.03.2008 ?, т.е. без времени.
2. Возможно ли вырезать из этих строк дату и вcтавить в другое поле (Date) т.е. чтоб в поле DateTime осталось 12.03.2008 12:35, а в поле Date скопировалась только 12.03.2008 ??
P.S. Delphi 7 + MSSQL2005
Ega23 (2008-05-07 15:38:00) [1]
> 0000001.
ну как раз 100 наносекунд, что GetSystemTimeAsFileTime должно давать...
Непонятно, почему раньше ше было, всё-таки вроде одна система...
sniknik (2008-05-07 15:34:00) [2]ниче, вот дождемся 2008-го, там толи 7 толи 9 (не помню) знаков под милисекунды(милимили...? котороче то что после секунд) и все значимые, дискретность .0000001.
всем хватит...
Ega23 (2008-05-07 14:20:00) [3]
> Может как то мешает тип SmallDate
Похоже на то.
Anatoly Podgoretsky (2008-05-07 13:44:00) [4]> Ega23 (07.05.2008 13:09:07) [7]
Дискрет никак не связан с длительностью, время пишется начиная с полуночи, а дата не зависима от времени, всего примерно 4 миллиарда дней.
Может как то мешает тип SmallDate
Ega23 (2008-05-07 13:09:00) [5]
> Так что это обеспечивает повышенную точность, уменьшение
> погрешности при преобразовании в строку, что с успехом компенсируется
> погрешность при записи в 3 миллисекунды :-). Очень не понятно
> почему так сделано.
Да ну их в баню, в 8 байт если с дискретом в 10 наносекунд писать, то в ~5800 лет уложиться можно.
Anatoly Podgoretsky (2008-05-07 12:51:00) [6]> Ega23 (07.05.2008 12:15:05) [5]
Так что это обеспечивает повышенную точность, уменьшение погрешности при преобразовании в строку, что с успехом компенсируется погрешность при записи в 3 миллисекунды :-). Очень не понятно почему так сделано.
Ega23 (2008-05-07 12:15:00) [7]
> тип datetime это не float и даже близко не лежал.
Пардон, с прямым углом спутал.
Values with the datetime data type are stored internally by Microsoft SQL Server as two 4-byte integers. The first 4 bytes store the number of days before or after the base date, January 1, 1900. The base date is the system reference date. Values for datetime earlier than January 1, 1753, are not permitted. The other 4 bytes store the time of day represented as the number of milliseconds after midnight.
Anatoly Podgoretsky (2008-05-07 12:10:00) [8]
> Ega23 © (07.05.08 10:04) [3]
> 1. В поле лежит datetime, это не строка, это float, реализацию
> в BOL посмотри.
тип datetime это не float и даже близко не лежал.
Ega23 (2008-05-07 10:04:00) [9]1. В поле лежит datetime, это не строка, это float, реализацию в BOL посмотри.
2. Посмотри скрипты:
Select Now = getadate();
Select Now = Cast(getadate() as char(10));
Select Now = Convert(varchar(10), getdate(), 104);
Select Now = Convert(varchar(10), getdate(), 104) + ' ' + Convert(varchar(10), getdate(), 108);
ANB (2008-05-07 09:57:00) [10]Подставить правильную маску конвертации.
> CAST(DateField AS CHAR(10)) ?
При некоторых настройках может дать 20080312 1
Loginov Dmitry (2008-05-07 07:49:00) [11]> Как при помощи sql запроса преобразовать это поле в вид
> 12.03.2008 ?, т.е. без времени.
CAST(DateField AS CHAR(10)) ?