Mat*_*att 13 sql datetime date
我正在尝试执行where语句,该语句指定DateTime字段位于上个月的开始和结束之间.
为此,我需要指定上个月的第一天的时间为00:00:00,而上个月的最后一天的时间为23:59:59.
这第二个条件让我很头疼..
有人可以帮我吗?
干杯
MSSQL 2008
Osc*_*mez 14
尝试:
SELECT DATEADD(ms, -3, '2011-07-20')
Run Code Online (Sandbox Code Playgroud)
这将是今天的最后23:59:59.
为什么3毫秒?,这是因为Microsoft SQL Server DATETIME列最多有3毫秒的分辨率(这是不会改变的).所以我们所做的就是减去3毫秒
您也可以使用小于'<'而不等于.所以你不需要23:59:59.
例如.在哪里DateCreated <'20111201 00:00:00'
尝试此操作,这可能对您有所帮助。我使用以下两种方法之一来处理DATETIME字段中的时间部分进行比较:例如:获取一天的用户日志,即从今天的上午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
Run Code Online (Sandbox Code Playgroud)
这将在“ 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
Run Code Online (Sandbox Code Playgroud)
参考使用转换的方法来自于我的经验,另一种方法是来自此链接http://weblogs.sqlteam.com/jeffs/archive/2007/01/02/56079.aspx 玩得开心:)
尝试使用 Datetime 数据类型的查询来获取
2018-01-29 23:59:59.997
select dateadd(ms, -3, (dateadd(day, +1, convert(varchar, GETDATE(), 101))))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
47078 次 |
最近记录: |