Ⅰ sql时间函数
SQLServer2000中没有这种数据类型,只有SQLServer2008中才有这种数据类型,名字叫time数据类型.time类型只有时分秒,没有年月日.
在SQLServer2000中如果要实现这种效果,那么就不适合用日期和时间类型,而应该采用字符串类型,值由时间类型转换而来,如:
SELECT CONVERT(varchar(100), GETDATE(), 108)--结果: 10:57:49
Ⅱ SQLServer数据库中将日期格式进行转换急急急
1.首先点击顶部菜单中的“新查询”,打开一个SQL输入窗口。
Ⅲ sqlserver中如何取日期的年月
这个,你只能把这个读取出来的数据当字符串处理了!!
用空格去分解这个字段,保存在数组里,然后提取第一个为月份,第二个为日期,第三个为年份,第四个为小时和分钟,已经上下午
$time
=
$rs["lastlogin"];
$times
=
explode("
",$time);
$month
=
$times[0];
$day
=
$times[1];
$year
=
$times[2];
$hour
=
substr($times[3],0,2);
$minute
=
substr($times[3],3,2);
if(substr($times[3],5,1)=='p')
{
$hour
=
intval($hour);
if($hour<12)
{
$hour
+=
12;
}
}
$realtime
=
$year."-".$month."-"."day"."
".$hour.":".$minute.":00";
echo
$realtime;
Ⅳ sqlserver怎么查询一小时内的信息(sql语句)
select * from 日期字段 BETWEEN DATEADD(HOUR,-1,GETDATE()) AND getdate()
Ⅳ sqlserver的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表示时间段是一点
唉,只想到这个笨办法唉
Ⅵ Sqlserver 中如何根据时间(24小时) 模糊查询一个字段并统计该字段24小时
用WHERE EXTRACT(HOUR FROM 时间字段)=6 或者楼上的TO_CHAR()感觉EXTRACT效率高点,而且返回是类型是整型! 答题不易,互相帮助,手机提问的朋友在客户端右上角评价点满意即可. 如认可我的回答,请点击采纳为满意回答按钮.
Ⅶ sqlserver 如何把日期型转换成指定格式
select convert(char(8),(datepart(year,getdate())*100+datepart(month,getdate()))*100+datepart(day,getdate()))
+ convert(char(6),(datepart(hour,getdate())*100+datepart(mi,getdate()))*100+datepart(ss,getdate()))
把getdate()换成你要转换的时间即可
好象是没有了。其中的加也要转换成字符型后才能加,如果不转换加到分钟时会发生溢出。
select convert(char(8),(datepart(year,'2010.1.4 16:28:56')*100+datepart(month,'2010.1.4 16:28:56'))*100+datepart(day,'2010.1.4 16:28:56'))
+ convert(char(6),(datepart(hour,'2010.1.4 16:28:56')*100+datepart(mi,'2010.1.4 16:28:56'))*100+datepart(ss,'2010.1.4 16:28:56'))
Ⅷ 如何模拟SQLServer的两个日期处理函数
//在 PHP 中处理日期非常不方便,比如求两个日期之间相差的月份?该怎么办呢? //文件名:date.inc. php 3 //在使用这两个函数前,要先将日期或日期时间转换成timestamp类型。 //如: //$today=mktime(0,0,0,date("m"),date("d"),date("Y")); /****模拟 sql
//在PHP中处理日期非常不方便,比如求两个日期之间相差的月份?该怎么办呢?
//文件名:date.inc.php3
//在使用这两个函数前,要先将日期或日期时间转换成timestamp类型。
//如:
//$today=mktime(0,0,0,date("m"),date("d"),date("Y"));
/****模拟sqlserver中的dateadd函数*******
$part 类型:string
取值范围:year,month,day,hour,min,sec
表示:要增加的日期的哪个部分
$n 类型:数值
表示:要增加多少,根据$part决定增加哪个部分
可为负数
$datetime类型:timestamp
表示:增加的基数
返回 类型:timestamp
**************结束**************/
function dateadd($part,$n,$datetime){
$year=date("Y",$datetime);
$month=date("m",$datetime);
$day=date("d",$datetime);
$hour=date("H",$datetime);
$min=date("i",$datetime);
$sec=date("s",$datetime);
$part=strtolower($part);
$ret=0;
switch ($part) {
case "year":
$year+=$n;
break;
case "month":
$month+=$n;
break;
case "day":
$day+=$n;
break;
case "hour":
$hour+=$n;
break;
Ⅸ sqlserver查询本月所有不在这个时间段的数据(如 整个四月份不在 7.30-8.30 12.30-13.30这个时间段)
首先你得有字段记录时间,假设这个字段是datetime类型,名为[create_time];
然后,可以使用datepart函数来获取一个时间类型的年、月、日、时、分、秒的值;
最后,可以将hour:minute转换为一个带小数的类型来比较,例如numeric(4,2)。
select * from ...
where datepart(month,updtime)=4
and not datepart(hour,create_time) +convert(numeric(4,2),datepart(minute,create_time))/100 between 7.3 and 8.3
and not datepart(hour,create_time) +convert(numeric(4,2),datepart(minute,create_time))/100 between 12.3 and 12.3
Ⅹ sqlserver截取日期的年份和月份
sqlserver 截取日期年份和月份使用datepart函数,函数使用方法如下:
一、函数功能:DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
二、语法:DATEPART(datepart,date)
三、参数说明:date参数是合法的日期表达式。datepart参数可以是下列的值:
四、实例
1、截取年份:datepart(yy,'2017-1-1') 返回:2017
2、截取月份:datepart(mm,'2017-1-1') 返回:1
五、datepart函数返回的是整型数值,如果需要返回字符型,那么使用datename()函数,用法与datepart相同,只是返回数据类型不同。