日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql计算多少天后的日期_数据库 - mysql 计算某个时间,多少天后,多少个月后时间戳...

發(fā)布時間:2024/1/23 数据库 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql计算多少天后的日期_数据库 - mysql 计算某个时间,多少天后,多少个月后时间戳... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

數(shù)據(jù)庫設(shè)計(一): 數(shù)據(jù)庫設(shè)計步驟: ?需求分析--------> ?邏輯設(shè)計 ------------> 物理設(shè)計----------->維護優(yōu)化。 【1】需求分析:分析需要存儲的數(shù)據(jù),數(shù)據(jù)的特性,數(shù)據(jù)的生命周期。 【2】邏輯設(shè)計: 【3】物理設(shè)計: 【4】維護優(yōu)化: 舉一個列子:比如一

id start_time period_ytpe period_value 1 1461427200 day 3 2 1461427200 month 2

如上表,

start_time 表示開始時間,

period_ytpe 表示期限類型,

period_value表示期限值,

第一第記錄表是 3天,第二條表示2個月

如果查詢出,從start_time開始,期限在今天之前的記錄

比如:

第一條,start_time開始, 三天后的時間戳,如果是在今天(2016-06-04)之前,則是滿足條件!

第二條,start_time開始, 兩個月后的時間戳,如果是在今天(2016-06-04)之前,則是滿足條件!

____________________________________分割線_________________________________________

感謝各位的回答,在不改數(shù)據(jù)庫的情況下(數(shù)據(jù)表已經(jīng)被很多地方引用,且不是我設(shè)計),我自己寫了一條SQL,做了幾步轉(zhuǎn)換,感覺性能不會好,但好像可以用了,還好這個表數(shù)據(jù)量不大,每天最多新增一條新記錄。

把開始start_time轉(zhuǎn)為date,再DATE_ADD加上 日或者月,得到時間再轉(zhuǎn)為 unix_time

用今天凌晨 UNIX_TIMESTAMP(CURDATE())減去 上面得到的時候,如果結(jié)果大于 0,那就是想要的結(jié)果

SELECT `id`,`name`,

CASE `period_type`

WHEN 'day'

THEN UNIX_TIMESTAMP(CURDATE())-UNIX_TIMESTAMP(DATE_ADD(FROM_UNIXTIME(`start_time`),INTERVAL period_value day))

WHEN 'month'

THEN UNIX_TIMESTAMP(CURDATE())-UNIX_TIMESTAMP(DATE_ADD(FROM_UNIXTIME(`start_time`),INTERVAL period_value month))

ELSE ''

END AS 'time_interval'

FROM `table`

WHERE `xxxxxxx'

HAVING time_interval>0

ORDER BY time_interval desc,

不知道你用的啥語言。

用最笨的辦法~~

先用你的語言獲取到今天的時間戳。例如1465056000

SELECT * FROM `table` WHERE `period_ytpe` = 'day' AND `start_time` + 86400*`period_value` < 1465056000

UNION

SELECT * FROM `table` WHERE `period_ytpe` = 'month' AND `start_time` + 86400*30*`period_value` < 1465056000

當(dāng)然缺陷就是,一個月默認(rèn)當(dāng)他30天了。

如果你是要用mysql去計算。。那把start_time存成時間類型吧。。然后用date_add去計算

AND話外題。。為啥設(shè)計表的時候不直接算好end_time呢?非要篩選的時候去用,計算類的會導(dǎo)致索引失效,很不好。各種掃表,

時間存儲建議將字段設(shè)置為 timestamp 或者 datetime 類型, 而不是數(shù)值類型的時間戳.

首先數(shù)值類型的時間戳不便於 SQL 中查詢, 另代碼中也需要進行轉(zhuǎn)換

在數(shù)值類型 SQL 中相關(guān)函數(shù)也無法使用, 需要先對數(shù)值類型時間戳轉(zhuǎn)換城 timestamp 或者 datetime 類型在計算【目的】 1.掌握MySQL數(shù)據(jù)庫的使用方法。 2.掌握J(rèn)ava操作MySQL數(shù)據(jù)庫的方法。 【目標(biāo)】 目標(biāo)1:MySQL數(shù)據(jù)庫的基本操作,包括MySQL的安裝、創(chuàng)建數(shù)據(jù)庫、數(shù)據(jù)表、增刪改查操作(80分)。 目標(biāo)2:Java操作MySQL數(shù)據(jù)庫,包括基本步驟和具體的編碼實現(xiàn)(90分)。

如果是 timestamp 或者是 datetime 可以使用 date_add 函數(shù)增加或者減少時間達(dá)到時間的要求

例如

select date_add(start_time, interval 1 day) from t

給 start_time 增加一天,

明確問題,你應(yīng)該是要求start_time在某天或者某月之后的時間戳。

思路:用當(dāng)前時間轉(zhuǎn)換成date格式,將date加上你要獲取的某天或某月的數(shù)值,然后將結(jié)果轉(zhuǎn)成時間戳

date_add(date,interval n exp)

其中date為date時間格式,如果是時間戳需要轉(zhuǎn)換,exp可以為

SECOND 秒 SECONDS MINUTE 分鐘 MINUTES HOUR 時間 HOURS DAY 天 DAYS MONTH 月 MONTHS

YEAR 年 YEARS MINUTE_SECOND 分鐘和秒 "MINUTES:SECONDS" HOUR_MINUTE 小時和分鐘 "HOURS:MINUTES"

DAY_HOUR 天和小時 "DAYS HOURS" YEAR_MONTH 年和月 "YEARS-MONTHS"

HOUR_SECOND 小時, 分鐘, "HOURS:MINUTES:SECONDS" DAY_MINUTE 天, 小時, 分鐘 "DAYS HOURS:MINUTES" DAY_SECOND 天, 小時, 分鐘, 秒 "DAYS HOURS:MINUTES:SECONDS"

1.從start_time開始3天后的時間戳:

MYSQL代碼如下

select UNIX_TIMESTAMP(date_add(FROM_UNIXTIME(start_time), interval 3 day)) from t

3代表你要加的天數(shù),將T換成你的數(shù)據(jù)庫的任意表執(zhí)行即可

2.從start_time開始N月后的時間戳:

select UNIX_TIMESTAMP(date_add(FROM_UNIXTIME(start_time), interval 3 MONTH)) from t

此函數(shù)數(shù)MYSQL的,其他數(shù)據(jù)庫也有相應(yīng)的函數(shù),但是沒有測過。,

試著寫了一下,失敗了。

期望的SQL:

SELECT * FROM table

WHERE start_time < UNIX_TIMESTAMP(DATE_SUB(CURRENT_DATE, INTERVAL `period_value` `period_type`));

結(jié)果以上SQL語法有誤,

較為接近的SQL:

SELECT * FROM table

WHERE start_time < UNIX_TIMESTAMP(DATE_SUB(CURRENT_DATE, INTERVAL `period_value` DAY));

但這就用不上period_type字段了。

其實正如@lyt8384 所說,在SQL語句里運用不適當(dāng)?shù)倪\算會讓索引失效的,查詢效率也會相應(yīng)下降。

如果有權(quán)限改變表結(jié)構(gòu)的話,可以新增一個end_time字段,end_time(單位:s)=start_time + period_type * period_value,然后對end_time字段做索引,這樣做應(yīng)該比較好。

總結(jié)

以上是生活随笔為你收集整理的mysql计算多少天后的日期_数据库 - mysql 计算某个时间,多少天后,多少个月后时间戳...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。