有人點我到MySQL官方文檔,其中規定,你可以做比較是這樣的:在MySQL中使用比較運算符(大於/小於/等於)來比較date/datetime/time/timestamp/etc是否合法?
DECLARE mydate DATE;
...
IF mydate > '2015-04-01' THEN
...
END IF;
有人點我到MySQL官方文檔,其中規定,你可以做比較是這樣的:在MySQL中使用比較運算符(大於/小於/等於)來比較date/datetime/time/timestamp/etc是否合法?
DECLARE mydate DATE;
...
IF mydate > '2015-04-01' THEN
...
END IF;
當你比較DATE,TIME,DATETIME或TIMESTAMP到一個常量字符串與<, <=, =, >=, >, or BETWEEN operators
,MySQL通常會將字符串轉換爲一個內部長整數,以加快比較(也有一點「放鬆」字符串檢查)。然而,這種轉換是受以下情況除外:
對於這些例外情況,通過將對象轉換爲字符串並執行字符串比較來完成比較。 爲了安全起見,假定字符串被比較爲字符串,並且如果要將時間值與字符串進行比較,請使用適當的字符串函數。 特殊的「零」日期'0000-00-00'可以作爲'0000-00-00'存儲和檢索。當通過Connector/ODBC使用'0000-00-00'日期時,它會自動轉換爲NULL,因爲ODBC無法處理那種日期。 因爲MySQL執行剛纔描述的轉換,下述語句均能正常工作(假設IDATE是DATE列):
INSERT INTO t1 (idate) VALUES (19970505);
INSERT INTO t1 (idate) VALUES ('19970505');
INSERT INTO t1 (idate) VALUES ('97-05-05');
INSERT INTO t1 (idate) VALUES ('1997.05.05');
INSERT INTO t1 (idate) VALUES ('1997 05 05');
INSERT INTO t1 (idate) VALUES ('0000-00-00');
SELECT idate FROM t1 WHERE idate >= '1997-05-05';
SELECT idate FROM t1 WHERE idate >= 19970505;
SELECT MOD(idate,100) FROM t1 WHERE idate >= 19970505;
SELECT idate FROM t1 WHERE idate >= '19970505';
究竟你的意思*比較*?你的程序裏面還是什麼? –