一、前言
因为我公司要做财务结算前一天0:00:00至23:59:59的数据,利用到动态拼接SQL语句
我们需要明白声明DateTime 和 Date 获取的时间格式是不一样的,所以通过此计算有利于得到我们需要的时间段数据
二、测试数据展示(自己看print结果)
DECLARE @startDate DATE; DECLARE @startDateTime DATETIME; DECLARE @endDateTime DATETIME ; SET @startDate=GETDATE(); SELECT @startDateTime=DATEADD(DAY,-1,@startDate); SET @endDateTime=DATEADD(second,-1,CONVERT(DATETIME,@startDate)) print(@startDateTime) print(CONVERT(DATETIME,@startDate)) print(@startDate) print(@endDateTime)
三、动态SQL语句
DECLARE @startDate DATE; DECLARE @startDateTime DATETIME; DECLARE @endDateTime DATETIME ; SET @startDate=GETDATE(); SELECT @startDateTime=DATEADD(DAY,-1,@startDate); SET @endDateTime=DATEADD(second,-1,CONVERT(DATETIME,@startDate)) declare @sql nvarchar(1000) set @sql=‘select * from E_OrdersLogistics where ForecastTime>=‘‘‘+cast(ISNULL(@startDateTime,‘‘) as nvarchar(100)) +‘‘‘ and ForecastTime<‘‘‘+CAST(ISNULL(@endDateTime,‘‘) as nvarchar(100))+‘‘‘‘ print(@sql) exec(@sql)
如需转载,请注明出处,谢谢大家支持~
时间: 2024-10-08 10:32:45