2011-02-15 88 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