我是一名经验丰富的SQL Server开发人员,负责处理Mysql项目。我简直不敢相信Mysql不支持日期格式的@variables!虽然我看到(底部)文档中的内容,因为我设计了一个查询来保存@var中每个客户的第一个活动日期,我仍然很想尝试:
set @mydate = STR_TO_DATE('Dec/15/2008', '%M/%d/%Y');
select @mydate;
但是我得到了BLOB的值,我收集的是Mysql的撑船方式。
所以我问,以下真的意味着没有格式化@vars的日期吗?为什么MYSQL会这样设计? MYSQL源代码中@vars的代码在哪里?:
来自MYSQL doc的: 用户定义的变量可以从一组有限的数据类型中分配一个值:整数,十进制,浮点,二进制或非二进制字符串或NULL值。
答案 0 :(得分:2)
迟到的回答让我疯了!它在工作台中返回Blob
但从命令行抛出一个整理错误。
您需要将该字段转换为日期 - 使用date_format似乎会混淆数据类型。
E.g。
SET @StartDate := CAST(DATE_FORMAT(NOW() ,'%Y-%m-01') AS Date); -- start of the month
答案 1 :(得分:1)
也许这会起作用(char似乎不那么成问题)
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);