今天被派到一个任务,原先项目中有一个功能是读取某个站点学习的次数,如果该次数小于3,则会有一个警告的符号,当时查询的是当前日期之前的次数,现在要改为当前月的学习次数小于三次,就要给出警告的提示。

其实这个功能也不难,按照一般的做法是获取当年的日期,拿到年份和月份,然后拼接字符串就行了,比如拿到的是2010年和11月份,那么拼接两个string,一个是2010年11月1号00:00,一个是2010年11月31号00:00。

但这样写未免有些麻烦,sqlserver数据库自带了这样的两个函数,代码如下:

 

当月第一天:   select   dateadd(dd,-day(getdate())+1,getdate())  
当月最后一天: select   dateadd(dd,-day(getdate()),dateadd(m,1,getdate()))

 

于是,在我的sql语句里面只要比较“学习时间”(表里面的一个字段值)>=  dateadd(dd,-day(getdate())+1,getdate()),<=dateadd(dd,-day(getdate()),dateadd(m,1,getdate())),这样就顺利的解决了问题。

 

测试人员测试之后,似乎这个方法有点问题,最终我将比较的方式也变成了函数,代码如下:

 

<![CDATA[DateDiff(day,dateadd(dd,-day(getdate())+1,getdate()),a.StudyDate) >=0]]>
                and <![CDATA[DateDiff(day,a.StudyDate,dateadd(dd,-day(dateadd(m,1,getdate())),dateadd(m,1,getdate()))) >=0]]>

 <![CDATA[ ]]>,之所以用到这个,是因为我这个sql放在sqlmap里面的,标签里面本身就有“<”和“>”了,a.StudyDate是a表里面的StudyDate字段,即为学习时间,这样居然没问题了,我也有点百思不得其解

相关文章:

  • 2022-12-23
  • 2021-07-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-29
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-08-12
  • 2021-11-24
  • 2021-11-29
相关资源
相似解决方案