亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

數(shù)據(jù)庫 - mysql 計(jì)算某個(gè)時(shí)間,多少天后,多少個(gè)月后時(shí)間戳

瀏覽:114日期:2022-06-21 11:49:11

問題描述

idstart_timeperiod_ytpeperiod_value11461427200day321461427200month2

如上表,start_time 表示開始時(shí)間,period_ytpe 表示期限類型,period_value表示期限值,

第一第記錄表是 3天,第二條表示2個(gè)月

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

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

____________________________________分割線_________________________________________

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

把開始start_time轉(zhuǎn)為date,再DATE_ADD加上 日或者月,得到時(shí)間再轉(zhuǎn)為 unix_time用今天凌晨 UNIX_TIMESTAMP(CURDATE())減去 上面得到的時(shí)候,如果結(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>0ORDER BY time_interval desc

問題解答

回答1:

不知道你用的啥語言。用最笨的辦法~~先用你的語言獲取到今天的時(shí)間戳。例如1465056000

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

當(dāng)然缺陷就是,一個(gè)月默認(rèn)當(dāng)他30天了。如果你是要用mysql去計(jì)算。。那把start_time存成時(shí)間類型吧。。然后用date_add去計(jì)算

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

回答2:

時(shí)間存儲(chǔ)建議將字段設(shè)置為 timestamp 或者 datetime 類型, 而不是數(shù)值類型的時(shí)間戳.首先數(shù)值類型的時(shí)間戳不便於 SQL 中查詢, 另代碼中也需要進(jìn)行轉(zhuǎn)換在數(shù)值類型 SQL 中相關(guān)函數(shù)也無法使用, 需要先對(duì)數(shù)值類型時(shí)間戳轉(zhuǎn)換城 timestamp 或者 datetime 類型在計(jì)算

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

http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-add

例如

select date_add(start_time, interval 1 day) from t

給 start_time 增加一天

回答3:

明確問題,你應(yīng)該是要求start_time在某天或者某月之后的時(shí)間戳。思路:用當(dāng)前時(shí)間轉(zhuǎn)換成date格式,將date加上你要獲取的某天或某月的數(shù)值,然后將結(jié)果轉(zhuǎn)成時(shí)間戳date_add(date,interval n exp)其中date為date時(shí)間格式,如果是時(shí)間戳需要轉(zhuǎn)換,exp可以為SECOND 秒 SECONDS MINUTE 分鐘 MINUTES HOUR 時(shí)間 HOURS DAY 天 DAYS MONTH 月 MONTHS YEAR 年 YEARS MINUTE_SECOND 分鐘和秒 'MINUTES:SECONDS' HOUR_MINUTE 小時(shí)和分鐘 'HOURS:MINUTES' DAY_HOUR 天和小時(shí) 'DAYS HOURS' YEAR_MONTH 年和月 'YEARS-MONTHS' HOUR_SECOND 小時(shí), 分鐘, 'HOURS:MINUTES:SECONDS' DAY_MINUTE 天, 小時(shí), 分鐘 'DAYS HOURS:MINUTES' DAY_SECOND 天, 小時(shí), 分鐘, 秒 'DAYS HOURS:MINUTES:SECONDS'1.從start_time開始3天后的時(shí)間戳: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月后的時(shí)間戳:

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

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

回答4:

試著寫了一下,失敗了。期望的SQL:

SELECT * FROM tableWHERE start_time < UNIX_TIMESTAMP(DATE_SUB(CURRENT_DATE, INTERVAL `period_value` `period_type`));

結(jié)果以上SQL語法有誤,較為接近的SQL:

SELECT * FROM tableWHERE start_time < UNIX_TIMESTAMP(DATE_SUB(CURRENT_DATE, INTERVAL `period_value` DAY));

但這就用不上period_type字段了。

其實(shí)正如@lyt8384 所說,在SQL語句里運(yùn)用不適當(dāng)?shù)倪\(yùn)算會(huì)讓索引失效的,查詢效率也會(huì)相應(yīng)下降。如果有權(quán)限改變表結(jié)構(gòu)的話,可以新增一個(gè)end_time字段,end_time(單位:s)=start_time + period_type * period_value,然后對(duì)end_time字段做索引,這樣做應(yīng)該比較好。

主站蜘蛛池模板: 日韩精品一区二三区中文 | 久久www免费人成_看片高清 | 性人久久久久 | 免费观看h片 | 国产1级片 | aaa国产精品 | 免费超爽成年大片黄 | 亚洲福利在线看 | 免费国产不卡午夜福在线 | 国产精品久久精品福利网站 | 韩国r级福利视频在线观看网站 | 亚洲色图偷拍 | 亚洲欧洲日韩国产aa色大片 | 在线观看国产日本 | 毛色毛片免费看 | 亚洲欧美一区二区三区综合 | 在线一区观看 | 欧美精品做人一级爱免费 | 午夜精品国产爱在线观看不卡 | 日本片免费观看一区二区 | 国产免费一区不卡在线 | 欧美一级v片 | 国产精品不卡 | 免费视频观看在线www日本 | 在线观看av片永久免费 | 黄色免费看片网站 | 中国黄色片一级 | 成人免费在线播放视频 | 日本内谢69xxxx免费播放 | 日本人妖tubexxxx | 91在线网址| 色涩亚洲| 鲁丝片一区二区三区免费 | 中文字幕亚洲综合 | 亚欧洲精品在线视频免费观看 | 99爱在线精品视频免费观看9 | 国产一区二三区 | 国产成人精品无缓存在线播放 | 免费观看一级黄色片 | 97视频在线免费播放 | www.久久草 |