Текущий архив: 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.47 MB
Время: 0.041 c