首页 > 解决方案 > 从字符串 C# 应用程序转换日期和/或时间时转换失败

问题描述

我正在尝试返回在当前日期生日的数据库记录。我目前遇到转换错误。

这是代码我DOB在我的数据库上使用 varchar。请我需要帮助。

string query = @"SELECT Names, FamilyName, PhoneNo, gender, DOB, Email 
FROM Members 
WHERE month(Members.DOB) = month(getdate()) 
  AND day(Members.DOB) = day(getdate())";

我收到此错误:

System.Data.SqlClient.SqlException:'从字符串转换日期和/或时间时转换失败。

标签: c#sqltype-conversion

解决方案


例外是因为您正在尝试为 varchar 数据类型 column调用Month和函数。您应该在子句中将此列值转换为-YEARMembers.DOBdatetimewhere

string query = @"SELECT Names, FamilyName, PhoneNo, gender, DOB, Email 
FROM Members 
WHERE month(convert(datetime,Members.DOB,105)) = month(getdate()) 
  AND day(convert(datetime,Members.DOB,105)) = day(getdate())";

在上述转换中,第三个参数105是 DOB 列中日期值的格式,样式代码105代表dd-mm-yyyy格式,您可以在此处找到更多样式代码。


推荐阅读