Как выделить дату из типа datetime?
ivanopula
Дата: 08.09.2000 20:26:54
Уважаемые господа разработчики!
Подскажите, пожалуйста, как можно средствами SQL Server 7.0 выделить дату из типа datetime?
В Access аналог нужной функции DateValue().
С уважением,
Алекс.
judge
Дата: 09.09.2000 07:17:19
Syntax
DATEPART(datepart, date)
Arguments
datepart
Is the parameter that specifies the part of the date to return. The table lists dateparts and abbreviations recognized by Microsoft SQL Server.
Datepart Abbreviations
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
weekday dw
hour hh
minute mi, n
second ss, s
millisecond ms
Пример:
SELECT DATEPART(month, GETDATE())
Result:
-----------
5
Успехов, Александр.
ivanopula
Дата: 09.09.2000 07:38:21
Спасибо, уважаемый judge!
Функция DATEPART() действительно возвращает составляющие переменной типа datetime. Но у нее нет такого параметра (аббревиатуры), которая возвращала бы значение типа datetime, но с "отрезанным" временем. Например, имеется дата и время '08/25/00 12:30', результат, который мне нужен: '08/25/00' (но, поскольку это тип datetime, то на самом деле будет '08/25/00 0:00:00').
На mssqlserver.com в FAQ есть ответ на (похожий) вопрос, вот такой:
select convert(datetime,convert(char(10),getdate(),101))
Неужели, это самый простой способ отрезать время? :(
Дело в том, что мне нужно делать достаточно много таких вот "отрезаний", что приводит SQL код в такой вид, что разобраться в нём практически нереально. :(
А так хотелось бы ;)
F1
С уважением,
Алекс.
SergSuper
Дата: 11.09.2000 06:22:24
Можно еще и так:
select convert(datetime,convert(int,getdate()))
Будет несколько проще если сразу хранить день не в datetime, а в int
Т.е. в целой части храниться количество дней, в дробной - время.
А простых и удобных функций они почему-то не предусмотрели.
Harry
Дата: 22.11.2000 21:14:05
Нет под рукой справочника, в общем когда то я резал дату при помощи selecta там при помощи неких двух операторов можно указывать количество обрезаемых знаков справа или с лева не помню только сами операторы...
Fompro
Дата: 25.11.2000 19:29:15
Простите, будет легче понять что нужно сделать, если узнать для чего Вам это нужно... Р.Е. если у Вас дата используется в WHERE , то Вы можете сравнивать их как WHERE date_time < '20001125' -- по умолчанию 112-й формат.
aero
Дата: 25.12.2001 18:16:08
вариант с integer не работает в SQL7(только в нем проверял)
округление неправильное до 12 в меньшую сторону после 12 в большую
MadDog
Дата: 26.12.2001 04:38:29
Попробуйте так:
select convert(smalldatetime, convert(char(
, getdate(), 112), 112)
Слон
Дата: 27.12.2001 03:01:42
Я таким пользуюсь: CONVERT(smalldatetime, FLOOR(CONVERT(float, getdate())))
Павел
Дата: 28.12.2001 11:28:56
Все гораздо проще. Дата, как правило, используется только для ограничения диапазона, поэтому выгоднее использовать функцию datediff(day, date_column, original_date).