SQL基本操作——日期函数
Posted 站错队了同志
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL基本操作——日期函数相关的知识,希望对你有一定的参考价值。
SQL日期:当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式相匹配。只要数据包含的只是日期部分,运行查询就不会出问题。但是,如果涉及时间,情况就有点复杂了。在讨论日期查询的复杂性之前,我们先来看看最重要的内建日期处理函数。
SQL Server 中最重要的内建日期函数:GETDATE() 、DATEPART()、DATEADD()、DATEDIFF()、CONVERT()
1、GETDATE() 函数从 SQL Server 返回当前的时间和日期。
--基本使用 SELECT GETDATE() AS CurrentDateTime --创建带有日期时间列 (OrderDate) 的 "Orders" 表 CREATE TABLE Orders ( OrderId int NOT NULL PRIMARY KEY, ProductName varchar(50) NOT NULL, OrderDate datetime NOT NULL DEFAULT GETDATE() )
请注意,OrderDate 把 GETDATE() 规定为默认值。结果是,当您在表中插入新行时,当前日期和时间自动插入列中。现在,我们希望在 "Orders" 表中插入一条记录:
INSERT INTO Orders (ProductName) VALUES (\'Computer\')
结果:
OrderId | ProductName | OrderDate |
1 | Computer | 2008-12-29 16:25:46.635 |
2、DATEPART() 函数返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
语法:
DATEPART(datepart,date)
date 参数是合法的日期表达式。datepart 参数可以是下列的值:
假设我们有下面这个 "Orders" 表:
OrderId | ProductName | OrderDate |
1 | Computer | 2008-12-29 16:25:46.635 |
我们使用如下 SELECT 语句:
SELECT DATEPART(yyyy,OrderDate) AS OrderYear, DATEPART(mm,OrderDate) AS OrderMonth, DATEPART(dd,OrderDate) AS OrderDay FROM Orders WHERE OrderId=1
结果:
OrderYear | OrderMonth | OrderDay |
2008 | 12 | 29 |
3、DATEADD() 函数在日期中添加或减去指定的时间间隔。
语法:
DATEADD(datepart,number,date)
date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。datepart 参数可以是上图中的值。
我们利用上面的 "Orders" 表。现在,我们希望向 "OrderDate" 添加 2 天,这样就可以找到付款日期。我们使用如下 SELECT 语句:
SELECT OrderId,DATEADD(day,2,OrderDate) AS OrderPayDate FROM Orders
结果:
OrderId | OrderPayDate |
1 | 2008-12-31 16:25:46.635 |
4、DATEDIFF() 函数返回两个日期之间的时间。
语法:
DATEDIFF(datepart,startdate,enddate)
startdate 和 enddate 参数是合法的日期表达式。datepart 参数可以是上图中的值。使用如下 SELECT 语句:
SELECT DATEDIFF(hh,\'2008-12-29\',\'2008-12-30\') AS DiffDate
结果:
DiffDate |
24 |
5、CONVERT() 函数是把日期转换为新数据类型的通用函数。具体可以看上一篇文章
参考:SQL Date 函数
以上是关于SQL基本操作——日期函数的主要内容,如果未能解决你的问题,请参考以下文章