to 码农何苦为难码农: 1.CONVERT昨天就使用了,因为sql表中的字段类型是varchar,在从字符串向日期转换过程中提示失败。 2. ADOQuery1.SQL.Add('select * from hy_info where '+ formatdatetime('mm',StrToDateTime(hy_birthday)))..... 这样不行的,StrToDateTime后面只能是变量,不能是字段的名称。 还有其他办法吗?
select * from hy_info where datediff(month,CONVERT(CHAR(10), hy_info.hy_birthday, 120),getdate())=0 这样也提示转换失败
TryStrToDate
这两函数就可以了
我用StrToDateTime,结果不正确。麻烦给你写个语句,我想了一天了,没想出来。
假设你的表有出身日期字段,格式为yyyy-mm-dd// 查询所有7天后过生日的人
SELECT * FROM 表名 WHERE DATEDIFF(DAY, GETDATE(),
(SELECT REPLACE((SELECT CONVERT(CHAR(10), 表名.出生日期, 120)),
(SELECT CONVERT(CHAR(4), 表名.出生日期, 120)),
(SELECT YEAR(GETDATE()))))) = 7
FormatDateTime('YYYY-MM-DD', Now); // 2013-05-28
FormatDateTime('MM-DD', Now); // 05-28
1.CONVERT昨天就使用了,因为sql表中的字段类型是varchar,在从字符串向日期转换过程中提示失败。
2. ADOQuery1.SQL.Add('select * from hy_info where '+ formatdatetime('mm',StrToDateTime(hy_birthday)))..... 这样不行的,StrToDateTime后面只能是变量,不能是字段的名称。
还有其他办法吗?
这样也提示转换失败