Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Начало дня  [new]
Mandel
Member

Откуда:
Сообщений: 247
У меня есть значение типа datetime. как мне получить начало дня этого значения?
26 авг 11, 21:58    [11188139]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
Mandel
У меня есть значение типа datetime. как мне получить начало дня этого значения?

select	GETDATE(),
		DATEADD(dd,datediff(dd,'20000101',getdate()),'20000101') as today
26 авг 11, 22:08    [11188171]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
invm
Member

Откуда: Москва
Сообщений: 9825
select cast(cast(getdate() as date) as datetime);
26 авг 11, 22:35    [11188228]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
invm
select cast(cast(getdate() as date) as datetime);

А если SQL сервер 2005 ?
26 авг 11, 22:39    [11188235]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
Anayagas
Member

Откуда:
Сообщений: 1
gds,

а если 2003?
26 авг 11, 23:43    [11188430]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
iljy
Member

Откуда:
Сообщений: 8711
Anayagas
gds,

а если 2003?

Тогда надо что-то сильнодействующее колоть, такие случаи запускать нельзя
27 авг 11, 00:10    [11188484]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
салта
Guest
простите, что вмешиваюсь в ответы гуру, но у меня вот:
select @@version
go

select	GETDATE(),
		DATEADD(dd,datediff(dd,'20000101',getdate()),'20000101') as today
go

select cast(cast(getdate() as date) as datetime);
go

select cast(convert(char(8), getdate(), 112) as datetime);
go

Microsoft SQL Server 2005 - 9.00.1399.06 (X64) 
Oct 14 2005 00:35:21
Copyright (c) 1988-2005 Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.0 (Build 6002: Service Pack 2)


(строк обработано: 1)

today
----------------------- -----------------------
2011-08-27 15:34:14.050 2011-08-27 00:00:00.000

(строк обработано: 1)

Сообщение 243, уровень 16, состояние 1, строка 2
Type date is not a defined system type.

-----------------------
2011-08-27 00:00:00.000

(строк обработано: 1)
27 авг 11, 13:35    [11189298]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
салта, в 2005 серваке нет типа date.
27 авг 11, 15:49    [11189721]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
kDnZP
салта, в 2005 серваке нет типа date.

Как так, а в 2003?
27 авг 11, 18:15    [11189987]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
МСУ
Как так, а в 2003?

А его вообще небыло в природе.
27 авг 11, 18:55    [11190087]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
DENIS_CHEL
Member

Откуда:
Сообщений: 23097
Ken@t
МСУ
Как так, а в 2003?

А его вообще небыло в природе.


И тем не менее вопрос имеет право быть

PS В 2003 году появился релиз Server 2000 64-bit, иногда его называют 2003...

Ну это так на правах исторического экскурса...
29 авг 11, 08:50    [11193133]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
Уленшпигель
Member

Откуда:
Сообщений: 115
Mandel
У меня есть значение типа datetime. как мне получить начало дня этого значения?


начало дня это что? дата с нулевым временем? Тогда можно еще и так:

SELECT CAST(CAST(mydatetime as int) as datetime)
29 авг 11, 09:46    [11193317]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
Ural2
Member

Откуда:
Сообщений: 58
По-моему, правильнее так:
select DateDiff(day,0,GetDate())
29 авг 11, 12:17    [11194162]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Ural2
По-моему, правильнее так:
select DateDiff(day,0,GetDate())
А к нулевой дате кто прибавлять будет?
SELECT DATEADD(DAY, DATEDIFF(DAY,0, GETDATE()),0);
29 авг 11, 12:21    [11194198]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
Geep
Member

Откуда: Москва
Сообщений: 975
https://www.sql.ru/faq/faq_topic.aspx?fid=129
Отправили бы сразу в фак, может еще чего полезного для себя найдёт...
29 авг 11, 12:29    [11194263]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
Уленшпигель
Mandel
У меня есть значение типа datetime. как мне получить начало дня этого значения?


начало дня это что? дата с нулевым временем? Тогда можно еще и так:

SELECT CAST(CAST(mydatetime as int) as datetime)


так не стоит, лучше другие способы применять

DECLARE
	@morning datetime  = '20110501 10:00:00',
	@evening datetime  = '20110501 22:00:00'	
SELECT 
	CAST(CAST(@morning AS int) AS datetime), 
	CAST(CAST(@evening AS int) AS datetime)
29 авг 11, 12:40    [11194328]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
Ural2
Member

Откуда:
Сообщений: 58
автор
А к нулевой дате кто прибавлять будет?

Смешно.
Вы думаете если к цифре прибавить 0 что-нибудь изменится?
29 авг 11, 12:48    [11194385]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Ural2
автор
А к нулевой дате кто прибавлять будет?

Смешно.
Вы думаете если к цифре прибавить 0 что-нибудь изменится?
Это не смешно, а даже очень смешно!
29 авг 11, 12:49    [11194395]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
iljy
Member

Откуда:
Сообщений: 8711
Ural2
автор
А к нулевой дате кто прибавлять будет?

Смешно.
Вы думаете если к цифре прибавить 0 что-нибудь изменится?

Думаю что да. Тип например.
29 авг 11, 12:59    [11194470]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
Уленшпигель
Member

Откуда:
Сообщений: 115
Shakill,

неужели получается дата с нулевым временем?
29 авг 11, 13:03    [11194502]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
Ural2
Member

Откуда:
Сообщений: 58
Естественно. Опробавано не на одном софте.
29 авг 11, 13:07    [11194526]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
iljy
Member

Откуда:
Сообщений: 8711
Уленшпигель
Shakill,

неужели получается дата с нулевым временем?

Выполните да посмотрите, что получается.
29 авг 11, 13:15    [11194592]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Если есть желание фигней помаяться, то должно работать еще так:
SELECT CAST(CAST(CAST(CAST(GETDATE() AS TIMESTAMP) AS BIGINT)&0xFFFFFFFF00000000 AS TIMESTAMP) AS DATETIME)
29 авг 11, 13:32    [11194743]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
iljy
Member

Откуда:
Сообщений: 8711
kDnZP,

можно еще так:
SELECT 
	cast(CAST(cast(GETDATE() as timestamp) AS binary(4)) + 0x00000000 as datetime),
	CAST(substring(CAST(GETDATE() AS binary(8)),1,4) + 0x00000000 AS datetime), 
29 авг 11, 13:39    [11194808]     Ответить | Цитировать Сообщить модератору
 Re: Начало дня  [new]
J.d
Member

Откуда: Москва
Сообщений: 691
Ken@t
МСУ
Как так, а в 2003?

А его вообще небыло в природе.

взрыв мозга )))
29 авг 11, 13:43    [11194835]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить