㈠ sql的datetime和smalldatetime怎么用
一般情况下就用datetime就是了,smalldatetime精度太低了,判断时间的时候很容易弄错,等你用熟练了sql再使用smalldatetime吧,在c#里面拼一个string类型的sql语句就可以存储时间,如:string TestSql=" insert into TestTable set TestDateTime='"+ DateTime.Now.ToString() +"' ";
或者string TestSql=" insert into TestTable set TestDateTime='2010-3-5' ";
或者string TestSql=" insert into TestTable set TestDateTime='2010-3-5 11:03:11' ";
上面的代码复制粘贴到程序里去试试看就会有体会了。
㈡ sql怎么查询datetime
SELECT COUNT(*)/datediff(hour,'2009-06-15 00:00:00','2009-06-28 00:00:00')
from a
where b >= '2009-06-15 00:00:00'and b <= '2009-06-28 00:00:00'
如上是查询6月15日到28日期间,平均每小时记录的数据数目
datediff(hour,'2009-06-15 00:00:00','2009-06-28 00:00:00' --取得日期区间的小时数
------------------------------------------
哦,是我读题不仔细唉,呵呵。
这样的话就复杂了。
你不急的话我明天有空写个预存程序来解决这个问题
------------------------------------------
1.先建立日期时间构造预存程序,用来传回作时间段查询的两个时间
create PROC [dbo].[sp_fordate]
@year char(4),
@month char(2),
@day char(2),
@hour char(2),
@date1 varchar(12) output,
@date2 char(20) output,
@date3 char(20) output
as
begin
set @date1 = @year + '-' + ltrim(rtrim(@month)) + '-' +rtrim(@day)
set @date2 = @date1 + space(1) + ltrim(rtrim(@hour)) + ':00:00'
set @hour = @hour +1
set @date3 = @date1 + space(1) + ltrim(rtrim(@hour)) + ':00:00'
set @hour = @hour -1
set @date1 = @date1 + '-'+ @hour
end
2.在这磨清一个预存程序里用循环跑出一个用union关联的超长sql语句执行。需要传入四个值,年份(2009四位格式),月份,日期(若日期传入为空自动取1),瞎伏前小时(输入1表示1点到2点时段,以此类推)
create proc riqi
@year char(4),
@month char(2),
@day char(2),
@hour char(2)
as
BEGIN
declare @SQL varChar(4000)
if @day is null or @day = ''
begin
set @day = 1
end
declare @date1 char(12)
declare @date2 char(20)
declare @date3 char(20)
exec sp_fordate @year,@month,@day,@hour,@date1 output,@date2 output,@date3 output
set @sql = 'select count(*) as 数目, '''+ @date1 + ''' as 日期时间 from a where b >= ''' + @date2 + '''' + ' and b<= ''' + @date3 + ''''
set @day = @day + 1
while @day <= 31
BEGIN
exec sp_fordate @year,@month,@day,@hour,@date1 output,@date2 output,@date3 output
set @sql = @sql +char(10)+char(13)+ ' union all ' +char(10)+char(13)+ 'select count(*), '''+ @date1 + ''' from a where b >= ''' + @date2 + '''' + ' and b<厅余= ''' + @date3 + ''''
set @day = @day + 1
print @day
if @@error <> ''
BEGIN
break
END
ELSE
CONTINUE
END
exec(@sql)
END
测试结果如下
数目 日期时间
----------- ------------
3 2009-10-1-1
2 2009-10-2-1
1 2009-10-3-1
最后的-1表示时间段是一点
唉,只想到这个笨办法唉
㈢ 如何从sql server数据库中查询datetime类型的数据详细些!!!
这是查询与当前时间在同一周内的数据,sql语句是:
select * from 表 where datediff(week,时间字段,getdate())=0
也可以稍作修改用来查询与指定日期在同一周内的数据:
select * from 表 where datediff(week,时间字段,'2002-01-01')=0
像你的这个表,查询一段时间(需要指定前后日期的)
select * from 表 where startdate between 指定日期 and 指定日期
select * from 表 where leavedate between 指定日期 and 指定日期
查询一段时间( 不需要固定时间的,只需要前后间隔时间的)
select * from 表 where datediff(day,startdate,leavedate)<7 and startdate = 指定日期select * from 表 where datediff(day,startdate,leavedate)<7 and leavedate = 指定日期
这是查询此日期开始时间到离开时间在七天之间的所有数据,后面的and部分按需要加。
㈣ sql中如何将datetime日期转换成int日期
字符串和日期 必须符合整型的要求 整型是数字 字符串如果是数字的形式才可以转换 如果是汉字字母的话 你觉得能转换为数字吗? 肯定不行 日期也类似 如果日期类型是20130805这样的格式 你转换就没有问题 否则肯定报错
然后给你转换的 语法吧
--方法一:
select cast(字段名 as int)
--方法二:
select convert(int,字段名)