2013-03-01 58 views
0

我正在創建一個網站,用戶可以在該網站上創建特定場地上的娛樂節目。我需要檢查是否有任何節目固定在該特定場地的開始時間和結束時間時間由用戶輸入。比較用戶輸入的日期和數據庫中存儲的日期字段

我在名爲starttime的數據庫中有2個列名,包含yyyy-mm-dd hh:mm:ss形式的值的'endtime'。我想我需要將存儲在數據庫的兩個字段中的值轉換爲時間戳。但是如何編寫查詢。

如:

SELECT * 
FROM table_name 
WHERE 
    timestamp(starttime)>='user entered value' 
    AND timestamp(endtime)<='user entered value ' 

這是查詢的可能?

+0

是什麼''starttime''和''endtime''領域的數據庫字段類型? – leafnode 2013-03-01 13:27:15

+0

@leafnode datetime – Techy 2013-03-01 13:28:35

+0

嘗試'between'運算符 – k102 2013-03-01 13:30:54

回答

1

如果「用戶輸入的值」是unix時間戳,則可以使用UNIX_TIMESTAMP(field)函數將該字段轉換爲時間戳。如果不是,則必須先使用strtotime或類似函數將其轉換爲時間戳。或者你可以換個方式,並且通過使用STR_TO_DATE(date,format)MySQL函數將字符串轉換爲datetime來在查詢內部使用datetime值。

例如,如果用戶在YYYY-mm-dd hh:mm格式進入日期,以下查詢使用:

SELECT * FROM TABLE_NAME WHERE開始時間> = STR_TO_DATE( '2012-02-01 12:00',「%Y - %m-%d%H:%i')AND endtime < = STR_TO_DATE('2013-01-01 00:00','%Y-%m-%d%H:%i')

我個人喜歡在查詢中使用UNIX時間戳,但那只是我的怪癖。

+0

我需要將數據庫的列名稱內的值轉換爲其時間戳值。如何我包括這到我的sql查詢 – Techy 2013-03-01 13:39:31

+0

提供的例子 – leafnode 2013-03-01 13:45:43

+0

我實際上需要這一個。那就是select * table name where timestamp(starttime)> = STR_TO_DATE('2012-02-01 12:00','%Y-%m- %d%H:%i')AND timestamp(endtime)<= STR_TO_DATE('2013-01-01 00:00','%Y-%m-%d%H:%i')。 – Techy 2013-03-01 13:48:34

0

爲什麼不使用unix時間?它使處理日期更簡單。

$current_time=time(); 

這會創建一個整數。

您的疑問:

SELECT * FROM table 
WHERE starttime 
BETWEEN starttime AND endtime 
+0

我需要將數據庫的列名稱內的值轉換爲其時間戳值。如何將此包括到我的SQL查詢 – Techy 2013-03-01 13:39:11

相關問題