Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.01;
Скачать: CL | DM;

Вниз

SQL запрос.   Найти похожие ветки 

 
fluxion ©   (2008-05-07 06:25) [0]

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


 
Loginov Dmitry ©   (2008-05-07 07:49) [1]

> Как при помощи sql запроса преобразовать это поле в вид
> 12.03.2008  ?, т.е. без времени.


CAST(DateField AS CHAR(10)) ?


 
ANB   (2008-05-07 09:57) [2]

Подставить правильную маску конвертации.


> CAST(DateField AS CHAR(10)) ?

При некоторых настройках может дать 20080312 1


 
Ega23 ©   (2008-05-07 10:04) [3]

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);


 
Anatoly Podgoretsky ©   (2008-05-07 12:10) [4]


> Ega23 ©   (07.05.08 10:04) [3]
> 1. В поле лежит datetime, это не строка, это float, реализацию
> в BOL посмотри.

тип datetime это не float и даже близко не лежал.


 
Ega23 ©   (2008-05-07 12:15) [5]


> тип 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:51) [6]

> Ega23  (07.05.2008 12:15:05)  [5]

Так что это обеспечивает повышенную точность, уменьшение погрешности при преобразовании в строку, что с успехом компенсируется погрешность при записи в 3 миллисекунды :-). Очень не понятно почему так сделано.


 
Ega23 ©   (2008-05-07 13:09) [7]


> Так что это обеспечивает повышенную точность, уменьшение
> погрешности при преобразовании в строку, что с успехом компенсируется
> погрешность при записи в 3 миллисекунды :-). Очень не понятно
> почему так сделано.


Да ну их в баню, в 8 байт если с дискретом в 10 наносекунд писать, то в ~5800 лет уложиться можно.


 
Anatoly Podgoretsky ©   (2008-05-07 13:44) [8]

> Ega23  (07.05.2008 13:09:07)  [7]

Дискрет никак не связан с длительностью, время пишется начиная с полуночи, а дата не зависима от времени, всего примерно 4 миллиарда дней.
Может как то мешает тип SmallDate


 
Ega23 ©   (2008-05-07 14:20) [9]


> Может как то мешает тип SmallDate


Похоже на то.


 
sniknik ©   (2008-05-07 15:34) [10]

ниче, вот дождемся 2008-го, там толи 7 толи 9 (не помню) знаков под милисекунды(милимили...? котороче то что после секунд) и все значимые, дискретность .0000001.
всем хватит...


 
Ega23 ©   (2008-05-07 15:38) [11]


> 0000001.


ну как раз 100 наносекунд, что GetSystemTimeAsFileTime должно давать...
Непонятно, почему раньше ше было, всё-таки вроде одна система...



Страницы: 1 вся ветка

Текущий архив: 2008.06.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
15-1208766241
Vlad Oshin
2008-04-21 12:24
2008.06.01
что будет?


15-1208134374
Slider007
2008-04-14 04:52
2008.06.01
С днем рождения ! 14 апреля 2008 понедельник


15-1208316401
masv
2008-04-16 07:26
2008.06.01
доступ к нескольким сетям


9-1170543317
DevilDevil
2007-02-04 01:55
2008.06.01
BGRA


2-1210153969
Alex7
2008-05-07 13:52
2008.06.01
Флаговый параметр для CommandText ADODataSet к MS SQL