`

T-SQL日期处理相关

阅读更多

  

出自: http://www.cnblogs.com/Bowen80/archive/2008/04/11/1147688.html

 

1、日期格式化处理

DECLARE @dt datetime
SET @dt=GETDATE()

--1.短日期格式:yyyy-m-d
SELECT REPLACE(CONVERT(varchar(10),@dt,120),N'-0','-')

--2.长日期格式:yyyy年mm月dd日 
--A. 方法1 
SELECT STUFF(STUFF(CONVERT(char(8),@dt,112),5,0,N'年'),8,0,N'月')+N'日'
--B. 方法2 
SELECT DATENAME(Year,@dt)+N'年'+DATENAME(Month,@dt)+N'月'+DATENAME(Day,@dt)+N'日'

--3.长日期格式:yyyy年m月d日
SELECT DATENAME(Year,@dt)+N'年'+CAST(DATEPART(Month,@dt) AS varchar)+N'月'+DATENAME(Day,@dt)+N'日'

--4.完整日期+时间格式:yyyy-mm-dd hh:mi:ss:mmm
SELECT CONVERT(char(11),@dt,120)+CONVERT(char(12),@dt,114)

2、日期推算处理

DECLARE @dt datetime
SET @dt=GETDATE()

DECLARE @number int
SET @number=3

--1.指定日期该年的第一天或最后一天
--A. 年的第一天
SELECT CONVERT(char(5),@dt,120)+'1-1'

--B. 年的最后一天
SELECT CONVERT(char(5),@dt,120)+'12-31'


--2.指定日期所在季度的第一天或最后一天
--A. 季度的第一天
SELECT CONVERT(datetime,
CONVERT(char(8),
DATEADD(Month,
DATEPART(Quarter,@dt)*3-Month(@dt)-2,
@dt),
120)+'1')

--B. 季度的最后一天(CASE判断法)
SELECT CONVERT(datetime,
CONVERT(char(8),
DATEADD(Month,
DATEPART(Quarter,@dt)*3-Month(@dt),
@dt),
120)
+CASE WHEN DATEPART(Quarter,@dt) in(1,4)
THEN '31'ELSE '30' END)

--C. 季度的最后一天(直接推算法)
SELECT DATEADD(Day,-1,
CONVERT(char(8),
DATEADD(Month,
1+DATEPART(Quarter,@dt)*3-Month(@dt),
@dt),
120)+'1')


--3.指定日期所在月份的第一天或最后一天
--A. 月的第一天
SELECT CONVERT(datetime,CONVERT(char(8),@dt,120)+'1')

--B. 月的最后一天
SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+'1')

--C. 月的最后一天(容易使用的错误方法)
SELECT DATEADD(Month,1,DATEADD(Day,-DAY(@dt),@dt))

--4.指定日期所在周的任意一天
SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)

--5.指定日期所在周的任意星期几
--A.  星期天做为一周的第1天
SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)

--B.  星期一做为一周的第1天
SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)  

////////////////////////////////////////////////////////////////////////////////////////////////////

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对照一下

      select 当前日期=convert(varchar(10),getdate(),120),

             当前时间=convert(varchar(8),getdate(),114)

      select datename(dw,'2004-10-15')

      select 本年第多少周=datename(week,'2004-10-15'),

             今天是周几=datename(weekday,'2004-10-15')

 

函数

参数/功能

GetDate( ) 

 返回系统目前的日期与时间

DateDiff (interval,date1,date2)

 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1

DateAdd (interval,number,date)

 以interval指定的方式,加上number之后的日期

DatePart (interval,date)

 返回日期date中,interval指定部分所对应的整数值

DateName (interval,date)

 返回日期date中,interval指定部分所对应的字符串名称

 

参数 interval的设定值如下:

缩 写(Sql Server) (Access 和 ASP) 说明

Year

Yy yyyy 年 1753 ~ 9999

Quarter

Qq q   季 1 ~ 4

Month

Mm m   月1 ~ 12

Day of year

Dy 一年的日数,一年中的第几日 1-366

Day

Dd d   日,1-31

Weekday

Dw w 一周的日数,一周中的第几日 1-7

Week

Wk ww  周,一年中的第几周 0 ~ 51

Hour

Hh h   时0 ~ 23

Minute

Mi 分钟0 ~ 59

Second

Ss s 秒 0 ~ 59

Millisecond

Ms -

毫秒 0 ~ 999

 

 

SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm

例如:

select getdate()

2004-09-12 11:06:08.177

整理了一下SQL Server里面可能经常会用到的日期格式转换方法:

举例如下:

select CONVERT(varchar, getdate(), 120 )

2004-09-12 11:06:08

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

20040912110608

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

2004/09/12

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

20040912

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

2004.09.12

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

09/12/2004

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

12/09/2004

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

12.09.2004

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

12-09-2004

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

12 09 2004

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

09 12, 2004

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

11:06:08

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

09 12 2004 1

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

09-12-2004

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

12 09 2004 1

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

11:06:08.177


0
0
分享到:
评论
1 楼 JustDoNow 2010-04-07  
谢谢!

相关推荐

    Inside Microsoft SQL Server 2008 T-SQL Programming.pdf

    ### 关于《Inside Microsoft SQL Server 2008 T-SQL Programming》的知识点解析 #### 一、SQL Server 2008概述 《Inside Microsoft SQL Server 2008 T-SQL Programming》这本书深入地介绍了SQL Server 2008的各项...

    T-SQL示例大全(全是T-SQL语句 )

    T-SQL提供了大量内置函数,如聚合函数(COUNT、SUM、AVG、MIN、MAX)、字符串函数(CONCAT、SUBSTRING、PATINDEX)、日期时间函数(DATEADD、DATEDIFF、GETDATE)等,这些函数可以帮助处理和转换数据。 以上只是T-...

    T-SQL性能调优秘笈 基于SQL Server 2012窗口函数_PDF电子书

    T-SQL性能调优是一项复杂但重要的任务,尤其是在处理大量数据时。合理利用窗口函数可以极大地简化查询逻辑,而通过实施有效的性能调优策略,则能够确保查询执行的高效性。此外,持续监控系统性能并通过调整索引、...

    T-SQL用户指南&T-SQL用户手册打包下载

    5. **函数**:T-SQL提供了大量的内置函数,如聚合函数(SUM、AVG、COUNT等)、数学函数、字符串函数、日期时间函数等,可以方便地进行数据处理。 6. **存储过程与触发器**:存储过程是一组预编译的T-SQL语句,可以...

    MICROSOFT SQL SERVER 2008技术内幕:T-SQL语言基础.pdf

    T-SQL提供了大量的内置函数,包括聚合函数、字符串函数、数学函数、日期和时间函数、转换函数等,这些函数大大丰富了查询和数据处理的能力。 七、流程控制语句 为了执行程序式逻辑,T-SQL提供了IF...ELSE、WHILE、...

    实验二 T-SQL语言基础

    **T-SQL语言基础实验详解** 在数据库管理领域,T-SQL(Transact-SQL)是SQL的一个扩展,尤其在Microsoft SQL Server中被广泛使用。本实验主要关注T-SQL的基础知识,包括基本语法格式、运算符与表达式、基本语句以及...

    T-SQL日期函数应用

    通过实际案例演示了`DATEADD()`、`DATEPART()`以及`YEAR()`, `MONTH()`, `DAY()`等函数的使用方法,为日常开发工作中涉及日期处理提供了参考。此外,这些函数的掌握对于提高SQL Server开发效率、优化查询性能都具有...

    t-sql基础教程

    4. **函数**:T-SQL提供了大量内置函数,如数学函数、字符串函数、日期时间函数等,如`RAND()`生成随机数,`LEN()`计算字符串长度,`GETDATE()`获取当前日期和时间。 5. **存储过程**:存储过程是预编译的T-SQL语句...

    T-SQL程序设计与游标设计

    游标设计是 T-SQL 程序设计的重要应用之一,游标可以实现数据的逐条处理和批量处理。游标的使用方法包括声明游标、打开游标、取数据和关闭游标等步骤。 在 T-SQL 程序设计中,我们可以使用各种命令和函数来实现不同...

    T-SQL用户指南PDF文档

    4. **函数**:T-SQL包含大量的内置函数,如聚合函数(SUM, AVG, COUNT等),字符串函数(CONCAT, SUBSTRING, REPLACE等),日期/时间函数(GETDATE, DATEADD, DATEDIFF等),它们极大地丰富了你的查询能力。...

    T-SQL 语法参考手册.docx

    T-SQL还包含各种内置函数,如数学函数、字符串函数、日期时间函数等,用于处理特定任务。 5. 数据类型:理解数据类型是使用任何编程语言的基础,T-SQL提供了一系列的数据类型来适应不同类型的值,如整数、浮点数、...

    SQL Server 2008:T-SQL初学者指南(中文)

    **T-SQL**(Transact-SQL)是Microsoft SQL Server 的一种专有的SQL实现,它不仅包含了标准SQL的功能,还添加了许多增强功能,以支持更复杂的数据管理和事务处理需求。 #### 二、T-SQL基本对象 T-SQL的基本对象是...

    个人整理的比较完整的T-SQL总结

    9. 函数:T-SQL提供了一系列内置函数,如数学函数、字符串函数、日期/时间函数等,以及用户自定义函数(UDF)来执行特定计算。 10. 事务管理:T-SQL支持事务,确保数据一致性。BEGIN TRANSACTION、COMMIT ...

    T-SQL.rar_t-sql

    10. **函数**:T-SQL包含内置函数,如字符串函数、日期/时间函数、数学函数等,以及用户自定义函数(UDF),可以扩展T-SQL的功能。 总的来说,T-SQL是SQL Server中的核心语言,它涵盖了数据查询、插入、更新、删除...

    T-SQL编程入门经典(涵盖SQL Server 2008 & 2005)配书资源

    3. **函数与聚合函数**:书中可能会详细解释T-SQL中的内置函数,如字符串函数、数学函数、日期/时间函数,以及聚合函数如COUNT、SUM、AVG、MIN和MAX等,它们用于对数据进行计算和统计。 4. **视图与索引**:视图是...

    T-Sql编程交成及案例

    T-SQL不仅包括标准的SQL语句,如SELECT、INSERT、UPDATE和DELETE,还支持变量、流程控制、错误处理等高级特性。 二、触发器 触发器是一种特殊的存储过程,会在数据修改(INSERT、UPDATE或DELETE)时自动执行。它们...

    T-SQL.2008.入门

    《T-SQL 2008 入门》是一本专为初学者设计的教程,旨在帮助读者快速掌握T-SQL这一SQL Server数据库中的主要编程语言。T-SQL不仅是用于检索和操作数据的简单查询语言,它更是一种功能强大的编程语言,能够编写存储...

    标准SQL和transact-sql之比较学习

    函数方面,T-SQL提供了一些特有的函数,如DATEPART、DATEADD和DATEDIFF,这些函数方便地处理日期和时间。而在标准SQL中,这些功能可能需要通过更复杂的表达式来实现。另外,T-SQL的聚合函数,如SUM、AVG等,可以与...

Global site tag (gtag.js) - Google Analytics