SQLserver中常用日期时间函数

统计在数据库中是最常见也是必不可少的,前段时间用Teechat控件使用统计遇到的一些SQL语句整理一下,重点常用函数有datediff()和datepart(),下面大概讲述下这些函数.

 代码如下 复制代码

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)

 

计算时间的函数中有,年(yy),季(q),月(m),周(ww),时期(w),天(d),时(hh),分(n),秒(s)

getdate():返回当前日期

获取当前月份的天数:

 代码如下 复制代码

select datediff(d,getdate(),dateadd(m,1,getdate()))

获取当前年,季,月,周,天,时,分,秒:

 代码如下 复制代码

select datepart(yy,getdate()) //年
select datepart(q,getdate())  //季
select datepart(m,getdate())  //月
select datepart(ww,getdate())//周
select datepart(w,getdate())  //星期,从0开始.
select datepart(d,getdate())  //天
select datepart(hh,getdate())//时
select datepart(n,getdate()) //分
select datepart(s,getdate()) //秒

获取当前天的前后五天日期:

 代码如下 复制代码

select dateadd(dd,5,getdate())
select dateadd(dd,-5,getdate())

获取当前日期与目标日期相差的年,月,周,日,时,分,秒:

 代码如下 复制代码

select datediff(yy,'2005-01-01 14:12:01',getdate())
select datediff(q,'2005-01-01 14:12:01',getdate())
select datediff(m,'2005-01-01 14:12:01',getdate())
select datediff(ww,'2005-01-01 14:12:01',getdate())
select datediff(d,'2005-01-01 14:12:01',getdate())
select datediff(hh,'2005-01-01 14:12:01',getdate())
select datediff(n,'2005-01-01 14:12:01',getdate())
select datediff(s,'2005-01-01 14:12:01',getdate())

获取当前月份添加的信息:

 代码如下 复制代码

select count(*) as num, Origin from ks_article month(getdate())=DatePart("m",adddate) group by Origin

附ql server 2008 r2日期时间函数

 代码如下 复制代码

/*

Environment: win7 + sql server 2008 r2
Author: CC
Desctiption:
    常用日期函数整理:
    DAY,MONTH,YEAR  , DATEPART
    DATEADD,DATENAME ,
    DATEDIFF ,isdate 的使用
*/

--截取一个时间的年,月,日
select DAY(GETDATE())
      ,MONTH(GETDATE()) --MONTH() 函数的参数为整数时,一律返回整数值1,即SQL Server 认为其是1900 年1 月。
      ,YEAR(GETDATE())  --其日期值应在1753年到9999年之间,这是SQL Server系统所能识别的日期范围,否则会出现错误。
--运用DATEPART函数
UNION ALL
SELECT  DATEPART(DAY , GETDATE())
        ,DATEPART(MONTH , GETDATE())
        ,DATEPART(YEAR , GETDATE())
/*
(无列名)    (无列名)    (无列名)
   7    2012
   7    2012
*/

SELECT DATENAME (DD,GETDATE())  --返回类型为字符型
 /* (无列名)
     */

--用 dateadd 来获得下一个时间或之前的时间日期

 select   DATEADD (DD , 1 , getdate())  --当前时间的下一天
        , DATEADD (MM , 1 , getdate())  --当前时间的下一个月
        , DATEADD (YY , 1 , getdate())  --当前时间的下一年
        , DATEADD (DD , -1 , getdate()) --当前时间的前一天
        , DATEADD (MM , -1 , getdate()) --当前时间的前一个月
        , DATEADD (YY , -1 , getdate()) --当前时间的前一年
       
--2012-07-18 15:47:05.663    2012-08-17 15:47:05.663    2013-07-17 15:47:05.663    2012-07-16 15:47:05.663    2012-06-17 15:47:05.663    2011-07-17 15:47:05.663

SELECT DATEDIFF(DD,'2012-07-11 15:03:11.623',GETDATE())   --时间差
--6

SELECT DATENAME(dayofyear,GETDATE()) ,DATEDIFF(dd,'2012-01-01',getdate())
--199    198

SELECT DATENAME(year, GETDATE())  
    ,DATENAME(month,  GETDATE())   
    ,DATENAME(day,  GETDATE())    
    ,DATENAME(week,GETDATE())
    ,DATENAME(dayofyear, GETDATE())
    ,DATENAME(weekday,  GETDATE()); 
 --2012    July    17    29    199    Tuesday
      
SELECT DATENAME(hour, GETDATE())  --当天的第几个小时
    ,DATENAME(minute,GETDATE())          --当天小时的第几分
    ,DATENAME(second, GETDATE());      --当天小时分钟的第几秒
---15    48    9

SELECT ISDATE('2012-07-17') UNION ALL
SELECT ISDATE('2012-07-17 15:12:00') UNION ALL
SELECT ISDATE(111)
/*

 

*/

/*
函数        语法                                返回值                                            返回数据类型   
DAY            DAY ( date )                        返回表示指定 date 的“日”部分的整数。            int    具有确定性
MONTH        MONTH ( date )                        返回表示指定 date 的“月”部分的整数。            int    具有确定性
YEAR        YEAR ( date )                        返回表示指定 date 的“年”部分的整数。            int    具有确定性
DATENAME    DATENAME ( datepart , date )        返回表示指定日期的指定 datepart 的字符串。        nvarchar   
DATEPART    DATEPART ( datepart , date )        返回表示指定 date 的指定 datepart 的整数。        int   
DATEDIFF    DATEDIFF ( datepart , startdate , enddate )    返回两个指定日期之间所跨的日期或时间 datepart 边界的数目。    int    具有确定性
DATEADD        DATEADD (datepart , number , date )    通过将一个时间间隔与指定 date 的指定 datepart 相加,返回一个新的 datetime 值。   

ISDATE        ISDATE ( expression )    确定 datetime 或 smalldatetime 输入表达式是否为有效的日期或时间值。
            int    只有与 CONVERT 函数一起使用,同时指定了 CONVERT 样式参数且样式不等于 0、100、9 或 109 时,ISDATE 才是确定的。
*/

时间: 2024-09-10 20:17:22

SQLserver中常用日期时间函数的相关文章

js开发中常用日期时间函数

js开发中常用日期时间函数 字符串转成日期类型,date.prototype.isleapyear 判断闰年 date.prototype.format 日期格式化 date.prototype.dateadd 日期计算 date.prototype.datediff 比较日期差 date.prototype.tostring 日期转字符串 date.prototype.toarray 日期分割为数组 date.prototype.datepart 取日期的部分信息 date.prototype

Sqlserver 常用日期时间函数

MS SQL Server中文版的预设日期datetime格式是yyyy-mm-dd hh:mm:ss.mmm 长短日期格式 复制代码 代码如下: --短日期格式:yyyy-m-d SELECT REPLACE(CONVERT(varchar(10),getdate(),120),N'-0','-') --长日期格式:yyyy年mm月dd日 SELECT STUFF(STUFF(CONVERT(char(8),getdate(),112),5,0,N'年'),8,0,N'月')+N'日' --短

Sqlserver 常用日期时间函数_MsSql

MS SQL Server中文版的预设日期datetime格式是yyyy-mm-dd hh:mm:ss.mmm 长短日期格式 复制代码 代码如下: --短日期格式:yyyy-m-d SELECT REPLACE(CONVERT(varchar(10),getdate(),120),N'-0','-') --长日期格式:yyyy年mm月dd日 SELECT STUFF(STUFF(CONVERT(char(8),getdate(),112),5,0,N'年'),8,0,N'月')+N'日' --短

SQLite3中的日期时间函数使用小结_SQLite

复制代码 代码如下: import sqlite3conn = sqlite3.connect('/tmp/sqlite.db')cur = conn.cursor() 接下来干嘛呢?建一张表吧.这里需要注意的是,SQLite不支持在创建表的同时创建索引,所以要分两步走,先创建表然后再创建索引 复制代码 代码如下: create_table_stmt = '''CREATE TABLE IF NOT EXISTS test_table ( id INTEGER PRIMARY KEY AUTOI

php中的日期时间函数(1/6)

得到目前的日期和时间-我们有多少种方式? 2. 改变日期显示的方式-日期和时间的显示形式 3. 转换现在的日期为unix的时间戳值 4. 改变日期 a. 增加时间 b. 减去时间 c. 找出两日期之间的间隔 5. 为php教程添加dateadd函数 6. 为php添加datediff函数 **得到目前的日期和时间 在unix中,时间的表示方式为计算从1970年1月1日零时起所过去的秒数,这称为unix 时间戳(unix epoch). 如果我们有这样一段的代码:  代码如下 复制代码 ? ech

Sqlserver常用的时间函数---GETDATE、GETUTCDATE、DATENAME

server|sqlserver|函数 Sqlserver常用的时间函数---GETDATE.GETUTCDATE.DATENAME Sqlserver常用的时间函数---GETDATE.GETUTCDATE.DATENAME作者:淘特网 日期: 2005-4-12 15:53:24 访问次数:出处:淘特网--http://www.tot.name 显示选项: 自动滚屏[左键停止]GETDATE按 datetime 值的 Microsoft SQL Server 标准内部格式返回当前系统日期和时

ORACLE 常用函数——日期/时间函数

---------------------------------------------日期/时间函数----------------------------------------------- --1: SYSDATE 用来得到系统的当前日期 SELECT SYSDATE FROM DUAL; --2: ADD_MONTHS 增加或减去月份 SELECT TO_CHAR(ADD_MONTHS(TO_DATE('20080818','YYYYMMDD'),2), 'YYYY-MM-DD')

PHP中日期时间函数date()用法总结

格式化日期 date() 函数的第一个参数规定了如何格式化日期/时间.它使用字母来表示日期和时间的格式.这里列出了一些可用 的字母: •d - 月中的天 (01-31) •m - 当前月,以数字计 (01-12) •Y - 当前的年(四位数) 您可以在我们的 PHP Date 参考手册中,找到格式参数中可以使用的所有字母. 可以在字母之间插入其他字符,比如 "/"."." 或者 "-",这样就可以增加附加格式了:  代码如下 复制代码 <?

oracle的日期时间函数

经常写 sql 的同学应该会接触到一些 oracle 的日期时间函数, 例如: 财务软件或者人力资源软件需要按照每年, 每季度, 每月, 甚至每个星期来进行统计. 今天闲来没事, 特意从网上整理了一些资料, 以备日后查阅. 一.常用日期数据格式 1. 获取年的最后一位, 两位, 三位, 四位 select to_char(sysdate,'Y') from dual;    -- 获取年的最后一位 select to_char(sysdate,'YY') from dual;    -- 获取年