如何解决如何根据sql中表中的当前日期名称获取数据
这是示例
如何根据我的表中的日期名称获取此数据?
解决方法
你真的应该修正你的设计。每个医生/天元组应存储为单独的行而不是列。
对于您当前的数据结构,我建议取消透视,然后过滤:
select t.doctorname,v.*
from mytable t
cross apply (values
('Sunday',sunday)
('Monday',monday)
...
) v(dy,val)
where v.dy = datename(weekday,getdate())
,
正如 Larnu & GMB 所提到的,您应该考虑修复您的设计。暂时还可以使用动态SQL。
DECLARE @sqlCommand VARCHAR(max);
SET @sqlCommand = 'SELECT DOCTOR_NAME FROM MY_TABLE
WHERE ' + QUOTENAME(DATENAME(weekday,getdate())) + ' = 1';
EXEC (@sqlCommand)
,
declare @t table
(
Doctor_Name varchar(20),Sunday bit,Monday bit,Tuesday bit,Wednesday bit,Thursday bit,Friday bit,Saturday bit
);
insert into @t values
('dr.Sunday',1,0),('dr.Monday',('dr.Tuesday',('dr.Friday',('dr.Tuesday&Saturday',1);
select *
from @t
where choose(datepart(weekday,dateadd(day,@@datefirst,getdate())),Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday) = 1;
,
以下查询将帮助您获得结果:
DECLARE @SqlQuery varchar(8000)
DECLARE @DateVal DATE = GETDATE(),@DayName varchar(20)
SET @DayName = DATENAME(WEEKDAY,@DateVal);
SET @SqlQuery ='SELECT DOCTORNAME FROM TABLE_NAME WHERE '+ @DayName +'= 1'
EXEC(@SqlQuery)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。