我想,以填补在SQL Server表“日历”在一个vb.net窗体上点击一个按钮,我必须填写下一列:日期,week_weekend(此日期(星期一,星期二,...),period_name(季节,假日),code_schoolholiday(y或N),code_holiday(圣诞节,新年等)存储过程来填充日历
回答
找到一周使用的日期select DATEPART(weekday, _date_goes_here_)
这会给你一个表示当天的数字。您可以使用下面的代码为今天获得一天的名字:
-- EDIT as Martin rightly pointed out, you need to take
-- @@datefirst into account here's a version of code which will
-- return the right dayname regardless of this variable's value
select case DATEPART(weekday, getdate() + @@datefirst)
when 1 then 'Sunday'
when 2 then 'Monday'
when 3 then 'Tuesday'
when 4 then 'Wednesday'
when 5 then 'Thursday'
when 6 then 'Friday'
when 7 then 'Saturday'
end
你也可以很容易找到,如果这一天是周末:
select case DATEPART(weekday, getdate())
when 1 then 'weekend'
when 7 then 'weekend'
else 'weekday'
end
更多有关DATEPART
功能at MSDN
我们插入有很多日期的很多行和计算的数据,你需要下面的代码(今天选择和以下99天的变化,当然,你需要用0把它包声明):
select v1.x * 10 + v2.x as dayoffset
, cast((GETDATE() + v1.x * 10 + v2.x) as DATE) as calendardate
, case DATEPART(weekday, cast((GETDATE() + v1.x * 10 + v2.x) as DATE))
when 1 then 'Sunday'
when 2 then 'Monday'
when 3 then 'Tuesday'
when 4 then 'Wednesday'
when 5 then 'Thursday'
when 6 then 'Friday'
when 7 then 'Saturday'
end as dayname
from (values (1), (2), (3), (4), (5), (6), (7), (8), (9), (0)) v1(x)
cross join (values (1), (2), (3), (4), (5), (6), (7), (8), (9), (0)) v2(x)
order by v1.x * 10 + v2.x
你需要缩小你的要求为其他数据:
- 定义季节和标准的名称,以决定每一天是哪个季节 - 我相信你可以在这里再次轻松使用DATEPART功能。
- 学校假期发生在每个国家甚至每个大个国家地区不同天。缩小范围。同样在一些国家(如波兰),有些年份在周末和银行假期之间增加了额外的免费天数,以便延长假期,并且作为交换,孩子们在一周后的星期六去上学。
- 定义你明白节假日 - 无天?特殊宗教仪式/事件发生的日子?如果是的话那么哪个宗教,国家,宗教味道呢?我相信再次
DATEPART
功能将成为你在这里的好朋友。
要确定除夕:
select d, case
when DATEPART(month, d) = 12 and DATEPART(DAY, d) = 31 then 'New years eve'
else 'other day'
end
from (
select CAST('2010-12-31' as datetime)
union
select GETDATE()
) t(d)
DATEPART(平日...的'结果'不能保证像你一样。你需要考虑到的'@@ DATEFIRST' – 2011-05-09 11:00:34
@马丁你是如此吧!谢谢你,我会更新我的答案。 – Jakub 2011-05-09 11:08:29
的'VALUES'位是特定于SQL Server – 2011-05-09 11:33:08
- 1. EF和存储过程来填充实体的条目
- 2. MVC 3 - 使用存储过程来填充模型
- 3. 用约会填充日历
- 4. 用日历天填充UITableView
- 5. 使用现有存储过程创建存储过程以填充新表格
- 6. 使用存储过程填充DataGrid(Silverlight业务应用程序)
- 7. 它使用EXEC转换存储过程来填充表,以标量值函数
- 8. 如何为日历填充gridview?
- 9. 按月填充ggplot2日历热图
- 10. Gtk日历填充整个窗口
- 11. VB日历 - 填充mysql事件表
- 12. 如何使用javascript填充日历?
- 13. 填充日历广场的一半bgcolor
- 14. 用空白单元填充日历
- 15. 用用户时区填充jQuery日历
- 16. 从数据库填充的大日历
- 17. 基于RSS源填充日历
- 18. 在SOAPUI中运行存储过程并填充值
- 19. ASP.NET使用存储过程填充列表视图
- 20. NHibernate的 - 从存储过程填充一个属性
- 21. 如何使用存储过程中的参数填充gridview
- 22. 使用CSV文件填充Mysql数据库的存储过程
- 23. 如何使用光标填充存储过程
- 24. 填充从存储过程到访问前一报告结束
- 25. 存储过程中的SQL游标填充字符串变量
- 26. 存储过程用查询结果集填充变量
- 27. 如何在存储过程中在SSRS中填充数据集
- 28. 如何在Oracle存储过程中填充数组?
- 29. 用存储过程中的数据填充组合框
- 30. 从存储过程填充gridview在里面@tempTable
为什么你需要一个按钮的点击,以填补这相对于只产生[若干辅助日历表(HTTP:// codeinet。 blogspot.com/2006/08/auxiliary-calendar-table-for-sql.html)提前? – 2011-05-09 09:47:17