获取DateTime时间为23:59:59

时间:2011-07-21 03:18:53

标签: sql datetime date

我正在尝试使用where语句指定DateTime字段位于上个月的开始和结束之间。

为此,我需要指定上个月的第一天的时间为00:00:00,而上个月的最后一天的时间为23:59:59。

这第二个条件让我很头疼..

有人能帮助我吗?

干杯

MSSQL 2008

8 个答案:

答案 0 :(得分:13)

尝试:

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

这将是今天的最后一次23:59:59。

为什么3毫秒?,这是因为Microsoft SQL Server DATETIME列最多具有3毫秒的分辨率(这是不会改变的)。所以我们所做的就是减去3毫秒

答案 1 :(得分:7)

您还可以使用小于'<'没有平等。所以你不需要23:59:59。

EG。     WHERE DateCreated< '20111201 00:00:00'

答案 2 :(得分:4)

试试这个,它可能对你有所帮助 我使用这两种方法之一来处理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查询编辑器屏幕中打印以下内容

------------------------ 
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 玩得开心:))

答案 3 :(得分:1)

尝试使用Datetime数据类型获取此查询

  

2018-01-29 23:59:59.997

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

答案 4 :(得分:0)

declare @myDate DateTime, @lastMonth DateTime,  @thisMonth DateTime
set @myDate = GETDATE()
set @lastMonth = DateAdd(month, -1, CAST(@myDate as Date))
set @thisMonth = DateAdd(day, -DatePart(day, @myDate)+1, CAST(@myDate as Date))

select @myDate as MyDate, DateAdd(day, -DatePart(day, @lastMonth) + 1, @lastMonth) FirstDay, DateAdd(second, -1, @thisMonth) LastDay

结果

答案 5 :(得分:0)

尝试一下:

SELECT dateadd(millisecond,-1,cast(cast(getdate() AS date) AS datetime2))

答案 6 :(得分:0)

SELECT DATEADD(ms, -2,  CAST(CONVERT(date, DATEADD (DAY,1,getdate())) AS varchar(10)))

输出:yyyy-mm-dd 23:59:59.997

2020-08-31 23:59:59.997

答案 7 :(得分:-1)

---我希望有人觉得这很有用

声明@TodaysDate smalldatetime

声明@TodaysDatepm smalldatetime

----首先我得到午夜的日期和时间,即 16/05/2021 12:00 am

set @TodaysDate = DATEADD(minute, 0,CAST(FLOOR(CAST(CURRENT_TIMESTAMP AS float)) AS datetime))

----- 然后我在上面加上 23 小时 59 分钟,即 (60*23)+59

------给出 1439,从那里我使用 dateadd 函数

set @TodaysDatepm =DATEADD(minute, 1439, @TodaysDate)

------ 这将始终打印出您在@TodaysDate 中设置的午夜

打印@TodaysDatepm