Получайте DateTime со временем 23:59:59

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

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

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

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

Приветствия

MSSQL 2008

Ответ 1

попробовать:

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

Сегодня будет 23:59:59.

почему 3 миллисекунды?, это потому, что столбцы DATETIME Microsoft SQL Server имеют не более 3 миллисекунд (что не изменится). Итак, все, что мы делаем, это вычесть 3 миллисекунды

Ответ 2

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

Eg.   WHERE DateCreated < '20111201 00:00:00'

Ответ 3

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

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 Query будет напечатано следующее:

------------------------ 
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 Удачи:)

Ответ 4

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

2018-01-29 23: 59: 59.997

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