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基本操作——日期函数的主要内容,如果未能解决你的问题,请参考以下文章

SQL函数将日期四舍五入到最近的月份

sql server的一些日期操作函数

Laravel 5.8 有条件地插入 sql 片段

SQL数据库代码如何根据日期获取属于哪个季度

SQL日期时间函数

常用python日期日志获取内容循环的代码片段