• 找到7天内要过生日的记录


         前几天去面试,面试官问到了一道题,如何找到7天内需要过生日的记录,一时蒙住了,看来这两年来一直做管理,数据库基本的东西真是丢掉了不少,非常惭愧,导致后面的面试也砸了。

        回来一想,这个问题其实很简单,关键的一点就是找到当前日期和生日的月、日之间的差距在7天内的记录,有点绕的地方是记录的年份哪年的都有,怎么处理这个年是个小技巧,绕过了这点其他的很简单。

       其实年的处理可以找到和现在的年份的差异,给记录的年份增加这个差异;或者构造一个当前年+记录月+记录日的日期进行比较。

    代码如下:

     1 --创建测试库
     2 create database mytempdb
     3 go
     4 use mytempdb
     5 go
     6 --创建测试表
     7 create table t1
     8 (
     9 ID int identity(1,1),
    10 dbirth datetime
    11 )
    12 go
    13 
    14 --select * from t1
    15 --插入测试数据
    16 insert into t1
    17 select '2011-2-28' union all
    18 select '2001-3-2' union all
    19 select '2011-3-7'
    20 
    21 --方法二
    22 SELECT *,convert(datetime,convert(nvarchar(4),year(getdate()))+'-'+convert(nvarchar(4),month(dbirth))+'-'+convert(nvarchar(4),day(dbirth))) as newbirth 
    23 FROM t1 
    24 where convert(datetime,convert(nvarchar(4),year(getdate()))+'-'+convert(nvarchar(4),month(dbirth))+'-'+convert(nvarchar(4),day(dbirth))) >= getdate() 
    25 and convert(datetime,convert(nvarchar(4),year(getdate()))+'-'+convert(nvarchar(4),month(dbirth))+'-'+convert(nvarchar(4),day(dbirth))) <= getdate() + 7
    26 
    27 --方法一
    28 Select * from t1
    29 Where DateAdd(year,Year(Getdate())-Year(dbirth),dbirth)
    30 Between Convert(Varchar(10),Getdate(),120)
    31 And Convert(Varchar(10),Getdate()+7,120)

    ,当初怎么没想到啊,看来得积攒点这些原先玩的东西,难道自己老了?

  • 相关阅读:
    利用服务器实现疫情查询小系统(Web版+APP)
    第五周总结
    第四周总结
    初试python爬取网页数据
    使用ECharts完成数据可视化
    第三周总结
    第二周总结
    求数组中最大子数组的和
    软工第二周博客作业
    MySQL学习笔记(3)——创建、查看、修改、删除数据库
  • 原文地址:https://www.cnblogs.com/tippoint/p/2369749.html
Copyright © 2020-2023  润新知