获得一个月的天数:首先到得一个月最后一天的日期,通过 SQL Server 日期函数 day() 取得日期中的“天 ”部分

获得 2008 年 2 月份的天数:
select day(cast('2008-03-01' as datetime) - 1)

获得本月天数:

返回一个整数,该整数表示指定的 date 是该月份的哪一天。

select day(dateadd(month,1,getdate()) - day(getdate()))

获得上个月天数:
select day(getdate()-day(getdate()))

注:SQL Server 日期函数 day(@date) 等价于日期函数 datepart(day,@date)

1.  当前系统日期、时间
    select getdate() 
2. dateadd  在向指定日期加上一段时间的基础上,返回新的 datetime 值
   例如:向日期加上2天
   select dateadd(day,2,'2004-10-15')  --返回:2004-10-17 00:00:00.000

3. datediff 返回跨两个指定日期的日期和时间边界数。
   select datediff(day,'2004-09-01','2004-09-18')   --返回:17
4. datepart 返回代表指定日期的指定日期部分的整数。
  SELECT DATEPART(month, '2004-10-15')  --返回 10
5. datename 返回代表指定日期的指定日期部分的字符串
   SELECT datename(weekday, '2004-10-15')  --返回:星期五

6. day(), month(),year() --可以与datepart对照一下

值 缩 写(Sql Server) (Access 和 ASP) 说明
Year Yy yyyy 年 1753 ~ 9999
Quarter Qq q  季 1 ~ 4
Month Mm m  月1 ~ 12
Day of year Dy y 一年的日数,一年中的第几日 1-366
Day Dd d  日,1-31
Weekday Dw w 一周的日数,一周中的第几日 1-7
Week Wk ww 周,一年中的第几周 0 ~ 51
Hour Hh h  时0 ~ 23
Minute Mi n 分钟0 ~ 59
Second Ss s 秒 0 ~ 59
Millisecond Ms - 毫秒 0 ~ 999

举例:
1.GetDate() 用于sql server :select GetDate()
2.DateDiff('s','2005-07-20','2005-7-25 22:56:32')返回值为 514592 秒
DateDiff('d','2005-07-20','2005-7-25 22:56:32')返回值为 5 天
3.DatePart('w','2005-7-25 22:56:32')返回值为 2 即星期一(周日为1,周六为7)
DatePart('d','2005-7-25 22:56:32')返回值为 25即25号
DatePart('y','2005-7-25 22:56:32')返回值为 206即这一年中第206天

DatePart('yyyy','2005-7-25 22:56:32')返回值为 2005即2005年

 

善用 SQL Server 中的 CONVERT 函數處理日期字串:

例如說初學者可能為了輸入一個 "2008-2-27" 的格式會這樣寫:

  1. select convert(varchar(4),Year(getdate())) + '-' + convert(varchar(2), month(getdate()))+ '-' + convert(varchar(2), day(getdate()))

但如過客戶要求 "2008-02-27" 這種格式呢?!我看會寫瘋掉了,你可能會這樣寫:

  1. select
  2. convert(varchar(4),Year(getdate())) + '-' +
  3. CASE month(getdate())
  4. WHEN 1 THEN '0' + convert(varchar(2), month(getdate()))
  5. WHEN 2 THEN '0' + convert(varchar(2), month(getdate()))
  6. WHEN 3 THEN '0' + convert(varchar(2), month(getdate()))
  7. WHEN 4 THEN '0' + convert(varchar(2), month(getdate()))
  8. WHEN 5 THEN '0' + convert(varchar(2), month(getdate()))
  9. WHEN 6 THEN '0' + convert(varchar(2), month(getdate()))
  10. WHEN 7 THEN '0' + convert(varchar(2), month(getdate()))
  11. WHEN 8 THEN '0' + convert(varchar(2), month(getdate()))
  12. WHEN 9 THEN '0' + convert(varchar(2), month(getdate()))
  13. ELSE convert(varchar(2), month(getdate())) END +
  14. '-' +
  15. CASE day(getdate())
  16. WHEN 1 THEN '0' + convert(varchar(2), day(getdate()))
  17. WHEN 2 THEN '0' + convert(varchar(2), day(getdate()))
  18. WHEN 3 THEN '0' + convert(varchar(2), day(getdate()))
  19. WHEN 4 THEN '0' + convert(varchar(2), day(getdate()))
  20. WHEN 5 THEN '0' + convert(varchar(2), day(getdate()))
  21. WHEN 6 THEN '0' + convert(varchar(2), day(getdate()))
  22. WHEN 7 THEN '0' + convert(varchar(2), day(getdate()))
  23. WHEN 8 THEN '0' + convert(varchar(2), day(getdate()))
  24. WHEN 9 THEN '0' + convert(varchar(2), day(getdate()))
  25. ELSE convert(varchar(2), day(getdate())) END

別笑!我真的看過有人這樣寫!呵呵~

其實 SQL Server 早就有個 CONVERT 函數可以幫我們做這件事!如果你要輸出 2008-02-27 這種日期格式的字串,可以這樣寫:

  1. SELECT CONVERT(char(10), getdate(), 120)

下列出一些我常用的語法:

  • 輸出格式:2008-02-27 00:25:13

    SELECT CONVERT(char(19), getdate(), 120)

  • 輸出格式:2008-02-27

    SELECT CONVERT(char(10), getdate(), 12)

  • 輸出格式:2008.02.27

    SELECT CONVERT(char(10), getdate(), 102)

  • 輸出格式:08.02.27

    SELECT CONVERT(char(8), getdate(), 2)

  • 輸出格式:2008/02/27

    SELECT CONVERT(char(10), getdate(), 111)

  • 輸出格式:08/02/27

    SELECT CONVERT(char(8), getdate(), 11)

  • 輸出格式:20080227

    SELECT CONVERT(char(8), getdate(), 112)

  • 輸出格式:080227

    SELECT CONVERT(char(6), getdate(), 12)

想查詢完整的列表與說明可以到 MSDN 的 Transact-SQL Reference 去查詢 CAST and CONVERT 的詳細說明。

在数据库取出来的时候就转换好
select getdate()
2006-05-12 11:06:08.177

select Convert(varchar(10),getdate(),120)
2006-05-12

select CONVERT(varchar, getdate(), 120 )
2006-05-12 11:06:08

select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
20060512110608

select CONVERT(varchar(12) , getdate(), 111 )
2006/05/12

select CONVERT(varchar(12) , getdate(), 112 )
20060512

select CONVERT(varchar(12) , getdate(), 102 )
2006.05.12

其它几种不常用的日期格式转换方法:

select CONVERT(varchar(12) , getdate(), 101 )
0612/2005 select CONVERT(varchar(12) , getdate(), 103 )
12/09/2004

select CONVERT(varchar(12) , getdate(), 104 )
12.05.2006

select CONVERT(varchar(12) , getdate(), 105 )
12-05-2006

select CONVERT(varchar(12) , getdate(), 106 )
12 05 2006

select CONVERT(varchar(12) , getdate(), 107 )
05 12, 2006

select CONVERT(varchar(12) , getdate(), 108 )
11:06:08

select CONVERT(varchar(12) , getdate(), 109 )
0512 2006 1

select CONVERT(varchar(12) , getdate(), 110 )
09-12-2004

select CONVERT(varchar(12) , getdate(), 113 )
12 052006

select CONVERT(varchar(12) , getdate(), 114 )

SQL Server日期函数总结的更多相关文章

  1. SQL Server日期函数之获得一个月中的天数

    SQL Server日期函数之获得一个月中的天数在实际中的应用比例还是占为多数的,如果你对这一技术,心存好奇的话,以下的文章将会揭开它的神秘面纱,望会在以后的学习或是工作中带来很大的帮助. 获得一个月 ...

  2. SQL Server 日期函数:某天是星期几?

    [鹏城万里] 发表于 www.sqlstudy.com 要得到某一天是星期几,需要用到 SQL Server 中的日期函数:datename(). 今天是星期几,例子 1: set language ...

  3. Sql server 日期函数和日期转换

    时间函数 SQL Server Date 函数 下面的表格列出了 SQL Server 中最重要的内建日期函数: 函数 描述 GETDATE() 返回当前日期和时间 DATEPART(Type,dat ...

  4. sql server 日期函数

    一.sql server日期时间函数Sql Server中的日期与时间函数 1.  当前系统日期.时间     select getdate()  2. dateadd  在向指定日期加上一段时间的基 ...

  5. SQL Server 日期函数:EOMonth、DateFormat、Format、DatePart、DateName

    一,月份的最后一天 函数 EOMonth 返回指定日期的最后一天 EOMONTH ( start_date [, month_to_add ] ) 1,对于start_date 有两种输入方式,能够转 ...

  6. 四个很好用的Sql Server 日期函数:DateDiff、DatePart、DateAdd、DateName

    我以前查一段时间范围内的数据都是在程序里计算好日期再掉查询语句,现在我用下面的函数.SQL SERVER没有查一季度数据的函数. DateDiff函数: 描述 返回两个日期之间的时间间隔. 语法 Da ...

  7. SQL Server 日期函数大全

    一.统计语句 1.--统计当前[>当天00点以后的数据] SELECT * FROM 表 WHERE CONVERT(Nvarchar, dateandtime, 111) = CONVERT( ...

  8. Sql server日期函数用法

    SQL日期函数 SQL日期函数中的类型码可以为0,1,2,3,4,5,6,7,8,9,10,11,12,13,14 ,20,21,22,23,24,25,100,101,102,103,104,105 ...

  9. Sql server日期函数操作

    1.获取前一小时内的数据:DATEADD(HOUR,-1,GETDATE()),将"HOUR"替换成DAY,Month,YEAR就是前一天,前一月,前一年 2.获取日期部分,格式为 ...

随机推荐

  1. <转>浅谈DNS体系结构:DNS系列之一

    浅谈DNS体系结构 DNS是目前互联网上最不可或缺的服务器之一,每天我们在互联网上冲浪都需要DNS的帮助.DNS服务器能够为我们解析域名,定位电子邮件服务器,找到域中的域控制器……面对这么一个重要的服 ...

  2. SVM:从理论到OpenCV实践

    (转载请注明出处:http://blog.csdn.net/zhazhiqiang/ 未经允许请勿用于商业用途)   一.理论 参考网友的博客: (1)[理论]支持向量机1: Maximum Marg ...

  3. 微信web调试工具

    做微信公众号开发的时候,最头疼的一件事,莫过于bug调试了. 由于有些功能涉及到权限问题,必须在微信公众号内打开,所以对开发人员来说就是遇到了一场噩梦. 这里有两种方法: 1.工具:mac.使用微信m ...

  4. 关于display显示 linux

    export DISPLAY=ipaddressofyourmachineorpc:0.0 如果要在本来的机器上显示,使用 export DISPLAY=localhost:0

  5. ORA-15063: ASM discovered an insufficient number of disks for diskgroup "ASM,KEL"

    在启动ASM的时候报错,报错如下: SQL> startup ASM instance started Total System Global Area 130023424 bytes Fixe ...

  6. css优先级判断

    概念 浏览器是通过判断优先级,来决定到底哪些属性值是与元素最相关的,从而应用到该元素上.优先级是由选择器组成的匹配规则决定的. 如何计算? 优先级是根据由每种选择器类型构成的级联字串计算而成的. 它不 ...

  7. 那些经常被遗忘的 Java 面试题

    静态类和静态方法 如果一个类要被声明为static的,只有一种情况,就是静态内部类. 静态内部类实际上与普通类(即类名必须与文件名一样的顶级类)一样,只是静态内部类在某一类的内部定义了而已,既然是类, ...

  8. pandas.DataFrame 中save方法

    In [5]: frame.save('frame_pickle') ----------------------------------------------------------------- ...

  9. HDU 5753 Permutation Bo (推导 or 打表找规律)

    Permutation Bo 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5753 Description There are two sequen ...

  10. codeforces 630B Moore's Law

    B. Moore's Law time limit per test 0.5 seconds memory limit per test 64 megabytes input standard inp ...