请教SQL Server查询特定日,月,季度,年的SQL语句(另还问报表打印,模态窗体是否不能实现IE的自身打印控制?)

dong547785510 2009-08-01 11:41:56
1、如题。
2、目前待解决的就是按季度和按年查询。
如下拉列表选择2009年查询得到2009年的所有记录。
如下拉列表选择2009年第一季度查询得到2009年第一季度的所有记录。
3、最好有现成的例子。或者季度那里要有方法。
4、打印,请赐教打印控件。最好是服务器控件执行的。IE自带的就不要了。
如果可以实现,可另行加分。
5、或者实现IE自带打印非常灵活的话。
6、先谢谢了。请高手不吝赐教。
...全文
224 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongjianhua520520 2009-08-04
  • 打赏
  • 举报
回复
1参考:指定日期datediff(d,datTime,'" + inStarTime.Value.ToString() + "')=0
(2)指定月Month(datTime) =Month('" + TimeYearMonth + "')
(3)指定年Year(datTime) =Month('" + TimeYearMonth + "')
季度就是设定Month.如1-3为一季度。然后4>Month(datTime)>1等等
2 datTime是数据库的字段。加引号的是你输入的日期时间。
3 。模态窗体上好像不支持打印。可否换成window.open()的。一样能打印都成。
  • 打赏
  • 举报
回复
如果报表是用sql server reporting service做的,它带了打印功能,其实是用ActiveX做的。
打印是客户端的事情,似乎不可能用服务器控件来做
cailee 2009-08-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 dong547785510 的回复:]
1、如题。
2、目前待解决的就是按季度和按年查询。
如下拉列表选择2009年查询得到2009年的所有记录。
如下拉列表选择2009年第一季度查询得到2009年第一季度的所有记录。
3、最好有现成的例子。或者季度那里要有方法。
4、打印,请赐教打印控件。最好是服务器控件执行的。IE自带的就不要了。
如果可以实现,可另行加分。
5、或者实现IE自带打印非常灵活的话。
6、先谢谢了。请高手不吝赐教。

[/Quote]
--2009年的记录:
where [date] between datename(year,getdate())+'-1-1' and datename(year,getdate())+'-12-31 23:59:59'
--第一季度
where [date]>=datename(year,getdate())+'-1-1' and [date]<datename(year,getdate())+'-4-1'
jackyuen1 2009-08-02
  • 打赏
  • 举报
回复
/// <summary>
/// 按年查询
/// </summary>
/// <param name="year">年份</param>
/// <returns></returns>
public static List<T> findByDate(int year)
{
DateTime start = Convert.ToDateTime((year + "/01/01"));//开头
DateTime end = Convert.ToDateTime((year + "/12/31"));//年尾
string sql=string.format("select * from data where mdate between '{0} and '{1}'",start,end);
SqlDataReader reader= Const.client.ExecuteReader(sql);
}


如果是我就这么查年的数据。季度的你可以再添加一个参数进来查询
wuyq11 2009-08-02
  • 打赏
  • 举报
回复
打印一般通过webbrower
WebBrowser.ExecWB(6,1)
WebBrowser.ExecWB(8,1)
WebBrowser.ExecWB(7,1)
activex如ScriptX.cab
导出word,excel打印
rdlc报表
参考
wuyq11 2009-08-02
  • 打赏
  • 举报
回复
select * from table where datediff(Month,time1,getdate())=1 --距现在时间1个月
select * from table where datediff(quarter,time1,getdate())=1 --距现在时间1季度
select * from table where datediff(year,time1,getdate())=1 --距现在时间1年
SELECT ltrim(@year)+'0'+ltrim(DATEPART(Q,日期)),sum(数量)
from [Table]
group by ltrim(@year)+'0'+ltrim(DATEPART(Q,日期))

参考
ch219888 2009-08-02
  • 打赏
  • 举报
回复
帮顶
cat_hsfz 2009-08-02
  • 打赏
  • 举报
回复
这些都是日期计算的把戏吧,只要你知道怎么算出年的开始日期、季度的开始日期等等,你都能用大于号小于号来筛选。
cpp2017 2009-08-01
  • 打赏
  • 举报
回复
1.年简单吧.

where year(字段)=2009

季度也不复杂

where month(字段) in <=4 --一季度

其他的就不用说了吧.

4.我们一般打印就是id的默认打印,打报表套打都没问题,关键是要把格式调好

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧