delphi如何将字符串转换成日期格式?

linlingwei 2013-05-28 08:40:28
sql数据表中有个字段 hy_birthday是varchar类型。里面存放的数据一般三种格式:空值,yyyy-mm-dd,mm-dd
那么我如何查询当天生日会员、本周生日会员、本月生日会员和还有15天过生日的会员?
...全文
1148 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
linlingwei 2013-05-29
  • 打赏
  • 举报
回复
还是自己解决了,sql截取字符串进行比较
feiba7288 2013-05-29
  • 打赏
  • 举报
回复
引用 8 楼 chinawcs 的回复:
注意 控制面板 区域语言 选项 里面 短日期格式 否则转换会报 不是有效的日期格式
这个没办法,每个客户端电脑的设置都有可能不一样,不可能每台电脑都去设置。
chinawcs 2013-05-29
  • 打赏
  • 举报
回复
注意 控制面板 区域语言 选项 里面 短日期格式 否则转换会报 不是有效的日期格式
feiba7288 2013-05-29
  • 打赏
  • 举报
回复
直接用字符串比
linlingwei 2013-05-29
  • 打赏
  • 举报
回复
select * from hy_info where datediff(month,CONVERT(CHAR(10), hy_info.hy_birthday, 120),getdate())=0 这样也提示转换失败
linlingwei 2013-05-29
  • 打赏
  • 举报
回复
to 码农何苦为难码农: 1.CONVERT昨天就使用了,因为sql表中的字段类型是varchar,在从字符串向日期转换过程中提示失败。 2. ADOQuery1.SQL.Add('select * from hy_info where '+ formatdatetime('mm',StrToDateTime(hy_birthday)))..... 这样不行的,StrToDateTime后面只能是变量,不能是字段的名称。 还有其他办法吗?
sololie 2013-05-28
  • 打赏
  • 举报
回复
0即当天,如果是 -7即生日过了7天 另外delphi中转换日期字符串可以 FormatDateTime('YYYY-MM-DD', Now); // 2013-05-28 FormatDateTime('MM-DD', Now); // 05-28
sololie 2013-05-28
  • 打赏
  • 举报
回复
不知你用的啥数据库,如果是sqlsever的话 假设你的表有出身日期字段,格式为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  
linlingwei 2013-05-28
  • 打赏
  • 举报
回复
to sololie: 我用StrToDateTime,结果不正确。麻烦给你写个语句,我想了一天了,没想出来。
sololie 2013-05-28
  • 打赏
  • 举报
回复
StrToDateTime TryStrToDate 这两函数就可以了

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧