SQL取整与时间差值返回

在昨天学习了Checksum(Newid()函数和RAND()求随机数的区别,示例中用到了Round和DATEDIFF()语法。

今天我们来了解一下这两个函数的作用

Round舍入

select round(100*rand(),0) AS 随机值

结果如下

随机值 46

在这里我引入了一个Round函数,那么Round是用来做什么呢?

我们注意到所得结果是整数,也就说明了Round的作用。

定义:ROUND 函数用于把数值字段舍入为指定的小数位数。

ROUND() 语法

SELECT ROUND(column_name,decimals) FROM table_name
参数 描述 column_name 要舍入的字段。 decimals 规定要返回的小数位数。

ROUND() 实例

我们现有下面这个 “Products” 表:

Prod_Id ProductName Unit UnitPrice 1 gold 1000 g 32.35 2 silver 1000 g 11.56 3 copper 1000 g 6.85

现在,我们希望把名称和价格舍入为最接近的整数。

我们使用如下 SQL 语句:

SELECT ProductName, ROUND(UnitPrice,0) as UnitPrice FROM Products

结果集类似这样:

ProductName UnitPrice gold 32 silver 12 copper 7

我们对比一下Round使用前后随机数的差别

select round(100*rand(),0) Union all
select round(10*rand(),0) Union all
select round(rand(),2) Union all
select rand()

结果如下

随机值 52 8 0.49 0.0830142963021307

到了这里我们基本了解了Round函数。也许有人问,那如果我并不想舍入,而只是想进行向上或向下取整呢?

昨天在学习随机函数时,示例中使用floor和对随机数上下取整,如下

FLOOR向上取整

select floor(rand()*80) AS 随机值

CEILING向下取整

select  CEILING(rand()*100) as 随机值

结果即为想要的取整值。

DATEDIFF() 函数返回时间值差

定义

DATEDIFF() 函数返回两个日期之间的时间。

语法

DATEDIFF(datepart,startdate,enddate)

Startdate和 enddate 参数是合法的日期表达式。

datepart 参数可以是下列的值:

datepart 缩写 年 yy, yyyy 月 mm, m 年中的日 dy, y 日 dd, d 周 wk, ww 星期 dw, w 小时 hh 分钟 mi, n 秒 ss, s 毫秒 ms 微妙 mcs 纳秒 ns

实例1

使用如下 SELECT 语句:

SELECT DATEDIFF(day,2008-12-29,2008-12-30) AS DiffDate

结果:

DiffDate 1

实例2

使用如下 SELECT 语句:

SELECT ABS(DATEDIFF(day,2008-12-30,2008-12-28)) AS DiffDate

结果:

DiffDate 2
经验分享 程序员 微信小程序 职场和发展