2011-02-15 46 views
1

我是一位經驗豐富的SQL Server開發人員,負責Mysql項目。我簡直不敢相信Mysql不支持日期格式的@variables!雖然我見(下)什麼是文檔,因爲我設計一個查詢,以保持活動的第一個日期在@var每一位客戶,我仍然很想嘗試:MySQL是否真的不支持日期格式的@variables?

set @mydate = STR_TO_DATE('Dec/15/2008', '%M/%d/%Y'); 
select @mydate; 

但我得到了BLOB的價值,我收集的是Mysql的踢球方式。

所以我問,下面是否真的意味着沒有日期格式的@vars?爲什麼會這樣設計MYSQL?在MYSQL源代碼中@vars的代碼是什麼?

來自MYSQL文檔: 用戶定義的變量可以從有限的一組數據類型中分配一個值:整型,十進制,浮點型,二進制或非二進制字符串,或NULL值。

+1

也許我不明白,但在MySQL 5.0.51a上運行你的兩行給了我`2008-12-15`。 – Alessandro 2011-02-15 13:27:06

+0

你的resopnse是非常有用的,讓我的事實是,查詢從命令行工作,但不是從mysql工作臺(返回blob)或從蟾蜍(返回排除)...任何想法,爲什麼這些IDE有麻煩日期格式化@vars? – 2011-02-15 15:04:28

回答

1

也許這會工作(字符似乎是問題較少)

set @mydate = cast(STR_TO_DATE('Dec/15/2008', '%M/%d/%Y') as char); 

或保持原來datetime

set @mydate = cast(STR_TO_DATE('Dec/15/2008', '%M/%d/%Y') as datetime); 
2

晚的答案,但把我瘋了!它在工作臺中返回Blob,但會從命令行中引發排序規則錯誤。

您需要將字段轉換爲日期 - 使用date_format似乎與數據類型混淆。

E.g.

SET @StartDate := CAST(DATE_FORMAT(NOW() ,'%Y-%m-01') AS Date); -- start of the month