电脑安全

您当前的位置:主页 > 电脑安全 >

SQL语句获取日期-网络编程

来源:[db:来源]标题:   日期    编辑:电脑技术全能网 时间:2019-09-18 12:31

原标题:SQL语句获取日期-网络编程
   中心提醒:本教程为各人先容SQL语句怎样猎取特定的日期。  SQL语句猎取特定日期  1.一个月第一天的  Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)  2.本周的礼拜一  Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)  3.一年的第一天  Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)  4.季度的第一天  Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)  5.当天的深夜  Select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)  6.上个月的最初一天  Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))  7.客岁的最初一天  Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))  8.本月的最初一天  Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))  9.今年的最初一天  Select dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))  10.本月的第一个礼拜一  select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)  前往以后日期和时光  经过函数GETDATE(),你能够取得以后的日期和时光。函数GETDATE()能够用来作为DATEDIME型字段的缺省值。这对拔出记载时保留事先的时光是有效的。要树立一个表,此中的记载包括有以后的日期和时光,能够增加一个DATETIME型字段,指定其缺省值为函数GETDATE()的前往值,就象如许:  Create TABLE site_log (  username VARCHAR(40),  useractivity VARCHAR(100),  entrydate DATETIME DEFAULT GETDATE())  转换日期和时光  函数GETDATE()的前往值在表现时只表现到秒。现实上,SQL Sever外部时光能够准确到毫秒级(确实地说,能够准确到3.33毫秒)。  要失掉差别格局的日期和时光,你须要应用函数CONVERT()。比方,当上面的这个语句履行时,表现的时光将包含毫秒:  Select CONVERT(VARCHAR(30),GETDATE(),9)  留神例子中数字9的应用。这个数字指明白在表现日期和时光时应用哪类日期和时光格局。当这个语句履行时,将表现以下的日期和时光:  Nov 30 1997 3:29:55:170AM  (1 row(s) affected)  在函数CONVERT()中你能够应用很多种差别作风的日期和时光格局。下表表现了全部的格局。  日期和时光的范例:  范例值 尺度 输入  0 Default mon dd yyyy hh:miAM  1 USA mm/dd/yy  2 ANSI yy.mm.dd  3 British/French dd/mm/yy  4 German dd.mm.yy  5 Italian dd-mm-yy  6 - dd mon yy  7 - mon dd,yy  8 - hh:mi:ss  9 Default + milliseconds--mon dd yyyy  hh:mi:ss:mmmAM(or )  10 USA mm-dd-yy  11 JAPAN yy/mm/dd  12 ISO yymmdd  13 Europe Default + milliseconds--dd mon yyyy  hh:mi:ss:mmm(24h)  14 - hh:mi:ss:mmm(24h)  范例0,9,和13老是前往四位的年。对别的范例,要表现世纪,把style值加上100。范例13和14前往24小不时钟的时光。范例0,7,和13前往的月份用三位字符表现(用Nov代表November).  对表中所列的每一种格局,你能够把范例值加上100来表现有世纪的年(比方,00年将表现为2000年)。比方,要按日本尺度表现日期,包含世纪,你应应用以下的语句:  Select CONVERT(VARCHAR(30),GETDATE(),111)  在这个例子中,函数CONVERT()把日期格局停止转换,表现为1997/11/30  抽取日期和时光  在很多情形下,你兴许只想失掉日期和时光的一局部,而不是完全的日期和时光。为了抽取日期的特定局部,你能够应用函数DATEPART(),象如许:  Select site_name ‘Site Name’,  DATEPART(mm,site_entrydate) ‘Month Posted’ FROM site_directory  函数DATEPART()的参数是两个变量。第一个变量指定要抽取日期的哪一局部;第二个变量是现实的数据。在这个例子中,函数DATEPART()抽取月份,由于mm代表月份。上面是这个Select 语句的输入成果:  Site Name Month Posted  ………………………………………………………………  Yahoo 2  Microsoft 5  Magicw3 5  (3 row(s) affected)  Month Posted列表现了每个站点被查问的月份。函数DATEPART()的前往值是一个整数。你能够用这个函数抽取日期的各个差别局部,以下表所示。  日期的各局部及其简写  日期局部 简写 值  year yy 1753--9999  quarter qq 1--4  month mm 1--12  day of year dy 1--366  day dd 1--31  week wk 1--53  weekday dw 1--7(Sunday--Saturday)  hour hh 0--23  minute mi 0--59  second ss 0--59  milisecond ms 0--999  当你须要停止日期和时光的比拟时,应用函数DATEPART()前往整数是有效的。然而,上例中的查问成果(2,5)不是非常易读。要以更易读的格局失掉局部的日期和时光,你能够应用函数DATENAME(),以下例所示:  Select site_name ‘Site Name’  DATENAME(mm,site_entrydate) ‘Month Posted’  FROM site_directory  函数DATENAME()和函数DATEPART()接受一样的参数。然而,它的前往值是一个字符串,而不是一个整数。上面是上例该用DATENAME()失掉的成果:  Site Name Month Postec  ………………………………………………………………….  Yahoo February  Microsoft June  Magicw3 June  (3 row(s) affected)  你也能够用函数DATENAE()来抽取一个礼拜中的某一天。上面的这个例子同时抽取一周中的某一天和日期中的月份:  Select site_name ‘Site Name’,  DATENAME(dw,site_entrydate)+ ‘-’ + DATENAME(mm,site_entrydate)  ‘Day and Month Posted’ FORM site_directory  这个例子履行时,将前往以下的成果:  Site Name Day and Month Posted  ………………………………………………………………………  Yahoo Friday - February  Microsoft Tuesday - June  Magicw3 Monday - June  (3 row(s) affected)  前往日期和时光范畴  当你剖析表中的数据时,你兴许盼望掏出某个特准时间的数据。你兴许对特定的某一天中商场比方说2000年12月25日商场拜访者在你站点上的运动感兴致。要掏出这类范例的数据,你兴许会试图应用如许的Select语句:  Select * FROM weblog Where entrydate=“12/25/2000”  不要如许做。这个Select语句不会前往准确的记载商场它将只前往日期和时光是12/25/2000 12:00:00:000AM的记载。换句话说,只要恰好在半夜零点输出的记载才被前往。  成绩是SQL Sever将用完全的日期和时光取代局部日期和时光。比方,当你输出一个日期,但不输出时光时,SQL Sever将加上缺省的时光“12:00:00:000AM”。当你输出一个时光,但不输出日期时,SQL Sever将加上缺省的日期“Jan 1 1900”。  要前往准确的记载,你须要实用日期和时光范畴。有不止一种道路能够做到这一点。比方,上面的这个Select 语句将能前往准确的记载:  Select * FROM weblog  Where entrydate>=”12/25/2000” AND entrydate<”12/26/2000”  这个语句能够实现义务,由于它拔取的是表中的日期和时光大于即是12/25/2000 12:00:00:000AM并小于12/26/2000 12:00:00:000AM的记载。换句话说,它将准确地前往2000年圣诞节这一天输出的每一笔记录。  另一种方式是,你能够应用LIKE来前往准确的记载。经过在日期表白式中包括通配符“%”,你能够婚配一个特定日期的全部时光。这里有一个例子:  Select * FROM weblog Where entrydate LIKE ‘Dec 25 2000%’  这个语句能够婚配准确的记载。由于通配符“%”代表了任何时光。  应用这两种婚配日期和时光范畴的函数,你能够抉择某个月,某一天,某一年,某个小时,某一分钟,某一秒,乃至某一毫秒内输出的记载。然而,假如你应用 LIKE 来婚配秒或毫秒,你起首须要应用函数CONVERT()把日期和时光转换为更准确的格局(拜见后面“转换日期和时光”一节)。  比拟日期和时光  最初,另有两个日期和时光函数对依据日期和时光掏出记载是有效的。应用函数DATEADD()和DATEDIFF(),你能够比拟日期的迟早。比方,上面的Select语句将表现表中的每一笔记录曾经输出了几多个小时:  Select entrydate ‘Time Entered’  DATEDIFF(hh,entrydate,GETDATE()) ‘Hours Ago’ FROM weblog  假如以后时光是2000年11月30号下昼6点15分,则会前往以下的成果:  Time Entered Hours Ago  …………………………………………………  Dec 30 2000 4:09PM 2  Dec 30 2000 4:13PM 2  Dec 1 2000 4:09PM 698  (3 row(s) affected)  函数DADEDIFF()的参数是三个变量。第个变量指定日期的某一局部。在这个例子中,是按小时对日期停止比拟,(要懂得日期各局部的具体内容,请参考表 11.2)在日期2000年11月1日和2000年11月30日的指准时间之间有689个小时。别的两个参数是要停止比拟的时光。为了前往一个负数,较早的时光应当先给。  函数DATEADD()把两个日期相加。当你须要盘算停止日期这一类的数据时,这个函数是有效处的。如果你要查问一个月前注册用户的记载,你能够应用以下的Select语句:  Select username ‘User Name’,  DATEADD(mm,1,firstvisit_date) ‘Registration Expires’  FROM registration_table  函数DATEADD()的参数有三个变量。第一个变量代表日期的某一局部,这个例子用到了代表月份的mm。第二个变量指定了时光的距离商场在本例中是一个月。最初一个变量是一个日期,在这个例子中,日期是取自DATETIME型字段firstvisit_date.假定以后日期是June 30,2000,这个语句将前往以下的内容:  User Name Registration Expires  ……………………………………………………………………………  Bill Gates Jul 30 2000 4:09PM  President Clinton Jul 30 2000 4:13PM  William Shakespeare Jul 1 2000 4:09PM  (3 row(s) affected)  留神:  应用函数DATEADD()把一个日期加上一个月,它并不加上30天。这个函数只简略地把月份值加1。

上一篇:MSSQL Server查询优化方法-网络编程

下一篇:没有了