Получить DateTime со временем 23:59:59 - PullRequest
12 голосов
/ 21 июля 2011

Я пытаюсь сделать оператор where, который определяет поле DateTime между началом и концом предыдущего месяца.

Для этого мне нужно указать, что первый день предыдущего месяца имеет время 00:00:00, а последний день предыдущего месяца - 23: 59: 59.

Это второе состояние вызывает у меня головную боль ..

Может ли кто-нибудь мне помочь?

Приветствия

MSSQL 2008

Ответы [ 4 ]

13 голосов
/ 21 июля 2011

try:

SELECT DATEADD(ms, -3, '2011-07-20')

Это будет последнее значение 23:59:59 на сегодня.

почему 3 миллисекунды?Разрешение 3 миллисекунды (то, что не изменится).Итак, все, что мы делаем, это вычитаем 3 миллисекунды

7 голосов
/ 21 июля 2011

Вы также можете использовать меньше чем «<» без равных. Так что вам не нужно 23: 59: 59. </p>

Например. ГДЕ ДатаСоздана <'20111201 00:00:00' </p>

4 голосов
/ 28 декабря 2011

Попробуйте, это может быть полезно для вас. Я использую один из этих двух способов работы с частью времени в полях DATETIME для сравнения EX: получить журнал пользователя за один день, т.е. с сегодняшней даты в 12:00:00.AM до сегодняшней даты, но в 12:00:00

DECLARE @FromDate datetime
DECLARE @ToDate datetime

SET @FromDate = GETDATE()
SET @ToDate = GETDATE()
Print '------------------------ '
PRINT @FromDate
PRINT @ToDate
SET @FromDate = CONVERT(DATETIME, CONVERT(varchar(11),@FromDate, 111 ) + ' 00:00:00', 111) 
SET @ToDate = CONVERT(DATETIME, CONVERT(varchar(11),@ToDate, 111 ) + ' 23:59:59', 111)
Print '------------------------ '
PRINT @FromDate
PRINT @ToDate



DECLARE @TEST_FROM DATETIME
SET @TEST_FROM = dateadd(month,((YEAR(@FromDate)-1900)*12)+MONTH(@FromDate)-1,DAY(@FromDate)-1) + ' 12:00:00'

DECLARE @TEST_TO DATETIME
SET @TEST_TO = dateadd(month,((YEAR(@ToDate)-1900)*12)+MONTH(@ToDate)-1,DAY(@ToDate)-1) + ' 23:59:59'

Print '------------------------ '
PRINT @TEST_FROM
PRINT @TEST_TO

. В окне редактора SQL-запросов будет напечатано следующее:

------------------------ 
Dec 28 2011  3:18PM
Dec 28 2011  3:18PM
------------------------ 
Dec 28 2011 12:00AM
Dec 28 2011 11:59PM
------------------------ 
Dec 28 2011 12:00PM
Dec 28 2011 11:59PM

Ссылки. Способ использования преобразования основан на моем опыте, другой путь от этой ссылки http://weblogs.sqlteam.com/jeffs/archive/2007/01/02/56079.aspx Веселитесь :)) 1009 *

1 голос
/ 30 января 2018

Попробуйте этот запрос для использования типа данных Datetime, чтобы получить

2018-01-29 23: 59: 59,997

select dateadd(ms, -3, (dateadd(day, +1, convert(varchar, GETDATE(), 101))))
...