添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接


本文主要介绍Mysql的日期时间类型,包括DateTime、TimeStamp、Date、Time和Year的区别、sql语句中的比较,以及常用的日期时间函数

一、DateTime、TimeStamp、Date、Time和Year区分说明

1、DateTime

名称

说明

显示格式

YYYY-MM-DD HH:mm:ss

显示范围

1601-01-01 00:00:00 到 9999-12-31 23:59:59

应用场景

当业务需求中需要精确到秒时,可以用这个时间格式

后台取值

@JSONField(format=“yyyy-MM-dd HH:mm:ss”)

2、TimeStamp

名称

说明

显示格式

YYYY-MM-DD HH:mm:ss

显示范围

1601-01-01 00:00:00 到 9999-12-31 23:59:59

应用场景

当业务需求中需要精确到秒/毫秒时,或者需要不同时区,可以用这个时间格式

后台取值

@JSONField(format=“yyyy-MM-dd HH:mm:ss:SSS”)(这里只会精确到秒)

3、Date

名称

说明

显示格式

YYYY-MM-DD

显示范围

1601-01-01 到 9999-12-31

应用场景

当业务需求中只需要精确到天时,可以用这个时间格式

后台取值

@JSONField(format=“yyyy-MM-dd”)

4、Time

名称

说明

显示格式

HH:mm:ss

显示范围

00:00:00 到 23:59:59

应用场景

当业务需求中只需要每天的时间,可以用这个时间格式

后台取值

@JSONField(format=“HH:mm:ss”))

5、Year

名称

说明

显示格式

YYYY

显示范围

1601 到 9999

应用场景

当业务需求中只需要每年的,可以用这个时间格式

后台取值

@JSONField(format=“YYYY”))

重点说明一下DateTime和TimeStamp的区别

1、精确到毫秒都用TimeStamp

2、如果应用是需要适配不同时区的,有国内和国外的使用,使用TimeStamp就不会出现这种时差的问题,用dateTime就会出现各种各样的问题

二、SQL中关于日期时间的比较

mysql中时间的比较灵活,只要 格式相同 ,可以直接使用 <、>、= 进行比较,适应所有时间字段,也可以使用 between and 来进行比较。

-- timestamp类型的时间比较
SELECT * FROM test where timestamp_clomun = '2023-08-29 11:54:22'
-- datetime类型的时间比较
select * from test where datetime_clomun = '2023-08-29 11:54:22'
-- time类型的时间比较
SELECT * FROM test where time_clomun = '11:54:22'
-- date类型的时间比较
SELECT * FROM test where date_clomun = '2023-08-29'
-- year类型的时间比较
SELECT * FROM test where year_clomun = '2023'
-- year类型的时间比较
SELECT * FROM test where year_clomun between '2003' and '2023'
-- 查询最近两天的数据
SELECT * FROM base_user u where u.crt_time >= now()-interval 2 day

三、日期时间函数

AddDate():增加一个日期(天、周等)--select ADDDATE(NOW(),INTERVAL 1 DAY)

AddTime():增加一个是时间(时、分等)--select ADDTIME(NOW(),"10:10:10")

Now():返回当前日期和时间--select Now()

CurDate():返回当前日期

CurTime():返回当前时间

Date():返回日期时间的日期部分

DateDiff():计算两个日期之差--select DATEDIFF("2020-08-01","2020-08-20")

-语法: datediff(string enddate, string startdate)。返回结束日期减去开始日期的天数

Date_Add():高度灵活的日期运算函数

Date_Sub(): 返回两个日期之间的间隔

-语法: date_sub (string startdate, int days)。 返回开始日期startdate减少days天后的日期。

Date_Format():返回一个格式化的日期或时间串

DayOfWeek():对于一个日期,返回对应的星期几,显示的一周是从周日开始周六结束,其中周日为1,周六为7

WeekDay(): 对于一个日期,返回对应的星期几,显示的一周是从周一开始周日结束,其中周一为0,周日为6--select DAYOFWEEK("2020-09-21"),WEEKDAY("2020-09-21")

Time():返回一个日期时间的时间部分--select TIME(now())

Year():返回一个日期的年份部分

Month():返回一个日期的月份部分

Day():返回一个日期的天数部分

Hour():返回一个时间的小时部分

Minute():返回一个时间的分钟部分

Second():返回一个时间的秒数部分

千万级数据量处理查询hadoop

首先建表CREATE TABLE `student` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(10) NOT NULL COMMENT '姓名', `age` int(10) unsigned NOT NULL COMMENT '岁数', PRIMARY KEY (`id`), KEY `age`

id UInt64, i8 Int8, i16 Int16, i32 Int32, i64 Int64, ui8 UInt8, ui16 UInt16, ui32 UInt32, ui64 UInt64, f32 Float32, f64 Float64