首页 数据库 mysql教程 SQL DateTime函数使用示例

SQL DateTime函数使用示例

Jun 07, 2016 pm 05:49 PM
datetime sql

文章总结了关于DateTime函数用法与数据转换以及简单的参考手册。

在T-SQL中经常会用到与DateTime相关的函数,现将常用函数做一下汇总,以备忘。

们经常出于某种目的需要使用各种各样的日期格式,当然我们可以使用字符串操作来构造各种日期格式,但是有现成的函数为什么不用呢?

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

例如:

select getdate()

2004-09-12 11:06:08.177

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

SQL  DAY() – MONTH( ) – YEAR()

DAY('2008-09-30') = 30

MONTH('2008-09-30') = 9

YEAR('2008-09-30') = 2008

 

SQL DATEPART()

DATEPART(day, '2008-09-30 11:35:00.1234567') = 30

DATEPART(month, '2008-09-30 11:35:00.1234567') =9

DATEPART(year, '2008-09-30 11:35:00.1234567') = 2008

DATEPART(hour, '2008-09-30 11:35:00.1234567') = 11

DATEPART(minute, '2008-09-30 11:35:00.1234567') = 35

DATEPART(second, '2008-09-30 11:35:00.1234567') = 0

DATEPART(quarter, '2008-09-30 11:35:00.1234567') = 3

DATEPART(dayofyear, '2008-09-30 11:35:00.1234567') =273

DATEPART(week, '2008-09-30 11:35:00.1234567') = 40

DATEPART(weekday, '2008-09-30 11:35:00.1234567') =7

DATEPART(millisecond, '2008-09-30 11:35:00.1234567') =123

DATEPART(microsecond, '2008-09-30 11:35:00.1234567') = 123456

DATEPART(nanosecond, '2008-09-30 11:35:00.1234567') = 123456700

DATEPART(tzoffset, '2008-09-30 11:35:00.1234567 -07:00') = -420

 

SQL DATEADD()

DATEADD(day, 1, '2008-09-30 11:35:00') =  2008-10-30  01:35:00.000

DATEADD(month, 1, '2008-09-30 11:35:00') = 2008-10-30  11:35:00.000

DATEADD(year, 1, '2008-09-30 11:35:00') = 2009-09-30  11:35:00.000

DATEADD(hour, 1, '2008-09-30 11:35:00') = 2008-09-30  12:35:00.000

DATEADD(minute, 1, '2008-09-30 11:35:00') = 2008-09-30  11:36:00.000

DATEADD(second, 1, '2008-09-30 11:35:00') = 2008-09-30  11:35:01.000

DATEADD(quarter, 1, '2008-09-30 11:35:00') =2008-12-30  11:35:00.000

DATEADD(week, 1, '2008-09-30 11:35:00') = 2008-10-07  11:35:00.000

DATEADD(month, -1, '2008-09-30 11:35:00') = 2008-08-30  11:35:00.000

DATEADD(year, 1.5 , '2008-09-30 11:35:00') = 2009-09-30 11:35:00.000

 

SQL  DATENAME()

DATENAME(day, '2008-09-30 11:35:00.1234567') = 30

DATENAME(month, '2008-09-30 11:35:00.1234567') =September

DATENAME(year, '2008-09-30 11:35:00.1234567') = 2008

DATENAME(hour, '2008-09-30 11:35:00.1234567') = 11

DATENAME(minute, '2008-09-30 11:35:00.1234567') = 35

DATENAME(second, '2008-09-30 11:35:00.1234567') = 0

DATENAME(quarter, '2008-09-30 11:35:00.1234567') = 3

DATENAME(dayofyear, '2008-09-30 11:35:00.1234567') =273

DATENAME(week, '2008-09-30 11:35:00.1234567') = 40

DATENAME(weekday, '2008-09-30 11:35:00.1234567') =Saturday

DATENAME(millisecond, '2008-09-30 11:35:00.1234567') =123

DATENAME(microsecond, '2008-09-30 11:35:00.1234567') = 123456

DATENAME(nanosecond, '2008-09-30 11:35:00.1234567') = 123456700

DATENAME(tzoffset, '2008-09-30 11:35:00.1234567 -07:00') = -07:00

 

SQL DATEDIFF()

DATEDIFF(day, '2007-12-01' , '2008-09-30') = 303

DATEDIFF(month, '2007-12-01' , '2008-09-30') = 9

DATEDIFF(year, '2007-12-01' , '2008-09-30') = 1

DATEDIFF(hour, '06:46:45' , '11:35:00') =  5

DATEDIFF(minute, '06:46:45' , '11:35:00') =  289

DATEDIFF(second, '06:46:45' , '11:35:00') =  17295

DATEDIFF(quarter, '2007-12-01' , '2008-09-30') =  3

DATEDIFF(week, '2007-12-01' , '2008-09-30') =  44

DATEDIFF(hour, '2008-09-30' , '2007-12-01') =  -303

 

SOME OTHER SQL DATE/TIME  RELATED FUNCTIONS

GETDATE()

GETUTCDATE()

SYSDATETIME()

SYSUTCDATETIME()

SYSUTCDATETIMEOFFSET()

DATEADD(datepart,NUMBER,date)

DATEADIFF(datepart, startdate,enddate)

TODATETIMEOFFSET(datetime2,tzoffset)

SWITCHOFFSET(datetimeoffset,tzoffest)

ISDATE(expression)

 

Adding to this - Calculate no of Days between two dates excluding Weekends.

DECLARE @StartDate DATETIME
DECLARE @EndDate DATETIME
SET @StartDate = '2010/05/01'
SET @EndDate = '2010/05/11'
 

SELECT (DATEDIFF(dd, @StartDate, @EndDate) + 1)-(DATEDIFF(wk, @StartDate, @EndDate) * 2)
  -(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END)-(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END)     -- 7

Without century (yy) With century (yyyy)
Standard

Input/Output**
- 0 or 100 (*) Default mon dd yyyy hh:miAM (or PM)
1 101 USA mm/dd/yy
2 102 ANSI yy.mm.dd
3 103 British/French dd/mm/yy
4 104 German dd.mm.yy
5 105 Italian dd-mm-yy
6 106 - dd mon yy
7 107 - Mon dd, yy
8 108 - hh:mm:ss
- 9 or 109 (*) Default + milliseconds mon dd yyyy hh:mi:ss:mmmAM (or PM)
10 110 USA mm-dd-yy
11 111 JAPAN yy/mm/dd
12 112 ISO yymmdd
- 13 or 113 (*) Europe default + milliseconds dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 or 120 (*) ODBC canonical yyyy-mm-dd hh:mi:ss(24h)
- 21 or 121 (*) ODBC canonical (with milliseconds) yyyy-mm-dd hh:mi:ss.mmm(24h)
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(no spaces)
- 130* Kuwaiti dd mon yyyy hh:mi:ss:mmmAM
- 131* Kuwaiti dd/mm/yy hh:mi:ss:mmmAM

举例如下:

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

 

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Hibernate 框架中 HQL 和 SQL 的区别是什么? Hibernate 框架中 HQL 和 SQL 的区别是什么? Apr 17, 2024 pm 02:57 PM

HQL和SQL在Hibernate框架中进行比较:HQL(1.面向对象语法,2.数据库无关的查询,3.类型安全),而SQL直接操作数据库(1.与数据库无关的标准,2.可执行复杂查询和数据操作)。

Oracle SQL中除法运算的用法 Oracle SQL中除法运算的用法 Mar 10, 2024 pm 03:06 PM

《OracleSQL中除法运算的用法》在OracleSQL中,除法运算是常见的数学运算之一。在数据查询和处理过程中,除法运算可以帮助我们计算字段之间的比例或者得出特定数值的逻辑关系。本文将介绍OracleSQL中除法运算的用法,并提供具体的代码示例。一、OracleSQL中除法运算的两种方式在OracleSQL中,除法运算可以使用两种不同的方式进行

Oracle和DB2的SQL语法比较与区别 Oracle和DB2的SQL语法比较与区别 Mar 11, 2024 pm 12:09 PM

Oracle和DB2是两个常用的关系型数据库管理系统,它们都有自己独特的SQL语法和特点。本文将针对Oracle和DB2的SQL语法进行比较与区别,并提供具体的代码示例。数据库连接在Oracle中,使用以下语句连接数据库:CONNECTusername/password@database而在DB2中,连接数据库的语句如下:CONNECTTOdataba

详解MyBatis动态SQL标签中的Set标签功能 详解MyBatis动态SQL标签中的Set标签功能 Feb 26, 2024 pm 07:48 PM

MyBatis动态SQL标签解读:Set标签用法详解MyBatis是一个优秀的持久层框架,它提供了丰富的动态SQL标签,可以灵活地构建数据库操作语句。其中,Set标签是用于生成UPDATE语句中SET子句的标签,在更新操作中非常常用。本文将详细解读MyBatis中Set标签的用法,以及通过具体的代码示例来演示其功能。什么是Set标签Set标签用于MyBati

SQL中的identity属性是什么意思? SQL中的identity属性是什么意思? Feb 19, 2024 am 11:24 AM

SQL中的Identity是什么,需要具体代码示例在SQL中,Identity是一种用于生成自增数字的特殊数据类型,它常用于唯一标识表中的每一行数据。Identity列通常与主键列配合使用,可以确保每条记录都有一个独一无二的标识符。本文将详细介绍Identity的使用方式以及一些实际的代码示例。Identity的基本使用方式在创建表时,可以使用Identit

SQL出现5120错误怎么解决 SQL出现5120错误怎么解决 Mar 06, 2024 pm 04:33 PM

解决办法:1、检查登录用户是否具有足够的权限来访问或操作该数据库,确保该用户具有正确的权限;2、检查SQL Server服务的帐户是否具有访问指定文件或文件夹的权限,确保该帐户具有足够的权限来读取和写入该文件或文件夹;3、检查指定的数据库文件是否已被其他进程打开或锁定,尝试关闭或释放该文件,并重新运行查询;4、尝试以管理员身份运行Management Studio等等。

数据库技术大比拼:Oracle和SQL的区别有哪些? 数据库技术大比拼:Oracle和SQL的区别有哪些? Mar 09, 2024 am 08:30 AM

数据库技术大比拼:Oracle和SQL的区别有哪些?在数据库领域中,Oracle和SQLServer是两种备受推崇的关系型数据库管理系统。尽管它们都属于关系型数据库的范畴,但两者之间存在着诸多不同之处。在本文中,我们将深入探讨Oracle和SQLServer之间的区别,以及它们在实际应用中的特点和优势。首先,Oracle和SQLServer在语法方面存

SQL中months_between如何使用 SQL中months_between如何使用 Jan 25, 2024 pm 03:23 PM

SQL中MONTHS_BETWEEN是一个常见的函数,用于计算两个日期之间的月份差。它的使用方法取决于具体的数据库管理系统。

See all articles