Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Вниз

Поле типа дата   Найти похожие ветки 

 
Дырчик ©   (2004-11-17 10:10) [0]

Может быть я слишком глуп, но не могли бы вы подсказать как в таблице сделать поле типа date, а не DateTime?


 
Ega23 ©   (2004-11-17 10:12) [1]

А что такое Date, Time и DateTime?
Date=Trunc(DateTime)
Time=DateTime-Trunc(DateTime)


 
A_N_D ©   (2004-11-17 10:17) [2]

smalldatetime


 
Fay ©   (2004-11-17 10:19) [3]

В таблице "на сервере"? Никак. (Читай BOL)
Но можно делать обрезание 8)


 
Fay ©   (2004-11-17 10:19) [4]

2 A_N_D ©   (17.11.04 10:17) [2]
И чЁ будет?


 
A_N_D ©   (2004-11-17 10:28) [5]

Fay ©   (17.11.04 10:19) [4]
Округление до минут и в 2 раза меньше объем


 
Fay ©   (2004-11-17 10:31) [6]

>> Округление до минут
А это что получится, дата или время ? 8)


 
Дырчик ©   (2004-11-17 10:32) [7]

to A_N_D: smalldatetime - это тоже датетиме, только от отсчет от другой даты

to Fay: а чем сделать обрезание и в какой момент?


 
Vlad ©   (2004-11-17 10:36) [8]


> Дырчик ©   (17.11.04 10:32) [7]


> а чем сделать обрезание и в какой момент?

Дата представляет собой дробное число, где целая часть - дата, дробная - время. Функции "обрезания" - те же, что и для дробных чисел. В какой момент - да в любой, который тебе нужен.


 
Fay ©   (2004-11-17 10:36) [9]

Смотря для чего. Если нужно хранить обрезанное значение, то в триггере (к примеру), а если "видеть" - в селекте.
Знаешь, как обрезать?


 
A_N_D ©   (2004-11-17 10:37) [10]

Читаем BOL
datetime

Date and time data from January 1, 1753 through December 31, 9999, to an accuracy of one three-hundredth of a second (equivalent to 3.33 milliseconds or 0.00333 seconds). Values are rounded to increments of .000, .003, or .007 seconds, as shown in the table.

smalldatetime

Date and time data from January 1, 1900, through June 6, 2079, with accuracy to the minute. smalldatetime values with 29.998 seconds or lower are rounded down to the nearest minute; values with 29.999 seconds or higher are rounded up to the nearest minute.

Remarks
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.

The smalldatetime data type stores dates and times of day with less precision than datetime. SQL Server stores smalldatetime values as two 2-byte integers. The first 2 bytes store the number of days after January 1, 1900. The other 2 bytes store the number of minutes since midnight. Dates range from January 1, 1900, through June 6, 2079, with accuracy to the minute.

DateTime точность до 3.33 milliseconds
SmallDateTime точность до минуты

Других типов работы с датой в MSSQL нет


 
Fay ©   (2004-11-17 10:37) [11]

2 Vlad ©   (17.11.04 10:36) [8]
Вы, видимо, не знакомы с MSSQL. Или мало знакомы.
Дата в MSSQL точная. Читайте BOL!


 
Vlad ©   (2004-11-17 10:40) [12]


> Fay ©   (17.11.04 10:37) [11]

Я не про mssql, а про дельфи


 
Fay ©   (2004-11-17 10:40) [13]

2 A_N_D ©   (17.11.04 10:37) [10]
>> DateTime точность до 3.33 milliseconds
Если быть точным, значение милисекунд "оканчивается на" 0, 3 и 7.


 
Дырчик ©   (2004-11-17 10:40) [14]

Хочу хранить обрезаное значение...
И еще, я просто с MSSQL впервые столкнулся, не могу сообразить какие параметры указывать в функциях DATENAME и DATEPART


 
Соловьев ©   (2004-11-17 10:43) [15]


> Хочу хранить обрезаное значение...

зачем?


 
A_N_D ©   (2004-11-17 10:45) [16]

Дырчик ©   (17.11.04 10:40) [14]
Хочу хранить обрезаное значение...

тогда храни в int а в Delphi интерпретируй как дату
Но все равно что int, что smalldatetime весят 4 байта


 
Дырчик ©   (2004-11-17 10:45) [17]

А сам не знаю, просто охота, тада можно пользоваться просдым селектом, не заморачиваться на апдэйтах, и т.п.


 
Соловьев ©   (2004-11-17 10:47) [18]


> А сам не знаю, просто охота, тада можно пользоваться просдым
> селектом, не заморачиваться на апдэйтах, и т.п.

Слушай что тебе говорят [1]


 
Дырчик ©   (2004-11-17 10:47) [19]

а что на счет функций DATENAME и DATEPART?


 
Ega23 ©   (2004-11-17 10:48) [20]

А сам не знаю, просто охота, тада можно пользоваться просдым селектом, не заморачиваться на апдэйтах, и т.п.

Ну-ка ну-ка...  Это на каких апдейтах ты собрался заморачиваться? И какя разница между "сложным" и "простым" селектами?

Ерунду не говори.


 
A_N_D ©   (2004-11-17 10:51) [21]

Дырчик ©   (17.11.04 10:47) [19]
а что на счет функций DATENAME и DATEPART?

Читаем BOL
In this example, the date is specified as a number. Notice that SQL Server interprets 0 as January 1, 1900.

SELECT DATEPART(m, 0), DATEPART(d, 0), DATEPART(yy, 0)

Here is the result set:

----- ------ ------
1     1      1900

вот тебе дата: месяц день год


 
Дырчик ©   (2004-11-17 10:52) [22]

Ну наскока я понимаю: простой селект - это селект из одной таблицы, и при использовании АДО-компонетнов можно просто запостить редактируемую запись; а вот про сложные селекты я не говорил, есть еще составные селекты, и селекты с обработанными полями, и вот для них-то надо писать дополнительные запросы на апдэйты...
или я не прав?


 
Fay ©   (2004-11-17 10:52) [23]

Для получения даты без времени можно взять какую-то дату (КТД),
Вычислить DateDiff разницу (Р) между КТД и обрезаемой датой и прибавить DateAdd Р к КТД.


 
A_N_D ©   (2004-11-17 10:53) [24]

Дырчик ©   (17.11.04 10:45) [17]
А сам не знаю, просто охота, тада можно пользоваться просдым селектом, не заморачиваться на апдэйтах, и т.п.

Почитай про тригеры, а также про cast и convert.


 
Fay ©   (2004-11-17 10:55) [25]

2 A_N_D ©   (17.11.04 10:53) [24]
convert/cast нужен только для получения времени без даты, т.е. не нужен 8)


 
Дырчик ©   (2004-11-17 10:56) [26]

я что-то не понял - это так мелкософт наворотил?
например в DB2 все гораздо проще:
select date(datetime) from.....
и фсё!


 
A_N_D ©   (2004-11-17 10:59) [27]

select distinct convert(datetime,floor(convert(float,fromdate))) as VisitDate from Visits
возвращает дату


 
A_N_D ©   (2004-11-17 11:01) [28]

A_N_D ©   (17.11.04 10:59) [27]
поле fromdate типа datetime


 
Дырчик ©   (2004-11-17 11:18) [29]

как же тут все-таки в этом MSSQL сервере все скверно, теперь понитно почему я им не пользовался


 
Ega23 ©   (2004-11-17 11:22) [30]

как же тут все-таки в этом MSSQL сервере все скверно, теперь понитно почему я им не пользовался

Может с руками проблема? Не под то заточены?


 
Fay ©   (2004-11-17 11:32) [31]

2 A_N_D ©   (17.11.04 10:59) [27]
Это почти самый медленный (после варианта c DatePart) способ


 
Дырчик ©   (2004-11-17 11:32) [32]

Может быть, ну не привык я считать площадь квадрата через интегралы...


 
Fay ©   (2004-11-17 11:37) [33]

2 Дырчик ©   (17.11.04 11:32) [32]
>> Может быть, ну не привык я считать площадь квадрата через интегралы...
Не скромничай, получается ведь 8). Нафиг приводить datetime к float?


 
Ega23 ©   (2004-11-17 11:39) [34]

Может быть, ну не привык я считать площадь квадрата через интегралы...

А тебе никто полные извраты и не предлагает. И если уж ни то пошло, то приведение типов ты на клиенте замечательно сделать можешь, раз тебе так "обрезанная" дата необходима.
Непонятно только какими мотивами ты руководствуешься...



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

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

Наверх





Память: 0.53 MB
Время: 0.042 c
1-1102411586
Arkady
2004-12-07 12:26
2004.12.19
Hint без наведения


14-1101399274
vopros
2004-11-25 19:14
2004.12.19
Иду на Зенит через 30 минут


1-1101914058
hamster
2004-12-01 18:14
2004.12.19
Turbo Pascal - WinExec


4-1099863792
Змей
2004-11-08 00:43
2004.12.19
Логин


3-1101157948
Константинов
2004-11-23 00:12
2004.12.19
Простой вопросик. Доступ к полям БД





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский