2

我在 SQL Server 数据库中有一个字段类型 DateTime。我正在开发一个网络服务来获取日期和时间。

日期以这种格式 4/14/2013 10:10:01 PM 存储在数据库中。

现在,我有一个如下的网络方法:

public string GetdataJson(string lastdate)
        {

            DateTime myDateTime = DateTime.Parse(lastdate);


            string getvalue = "select * from tblfameface where last_updated >='" + myDateTime  + "'";

            con1 = new SqlConnection(conString1);
            con1.Open();
            SqlCommand cmd = new SqlCommand(getvalue, con1);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt1 = new DataTable();
            da.Fill(dt1);

            string jsonString = JsonConvert.SerializeObject(dt1);
            String finalString = "{\"Records\":";
            finalString += jsonString;
            finalString += "}";
            return finalString;

        }

但是这段代码给了我一个错误,字符串未被识别为有效的日期时间。如何将字符串转换为日期时间格式,如 4/14/2013 10:10:01 PM?帮助!

4

5 回答 5

7

您想要 12 小时制使用小 hh ,您想要 24 小时制使用大写 HH

DateTime formatted =Covert.ToDateTime( lastdate.ToString("dd/MM/yyyy hh:mm:ss.fff",
                                      CultureInfo.InvariantCulture));

如果要使用 12 小时制,请在格式字符串中使用 tt 来生成 AM/PM 指示符。

于 2013-04-23T09:30:52.997 回答
3

在您的格式字符串tt中用于PM/AM部分。这是代码:

 DateTime dateTime = 
    DateTime.ParseExact("4/14/2013 10:10:01 PM", 
                        "M/dd/yyyy hh:mm:ss tt",
                        System.Globalization.CultureInfo.InvariantCulture);

这也应该有效:

DateTime result = DateTime.Parse("04/14/2013 10:10:01 PM");

你确定你得到了正确的字符串吗?

于 2013-04-23T09:27:58.063 回答
0

尝试这个:

string getvalue = "select * from tblfameface where
     last_updated >= Convert(DateTime, '" + myDateTime  + "')";

或者这取决于你在 last_updated 列上的 SQL 数据类型

string getvalue = "select * from tblfameface where
     last_updated >= Convert(DateTime2(7), '" + myDateTime  + "')";
于 2013-04-23T09:45:49.210 回答
0

将查询行替换为

string getvalue = "select * from tblfameface where CAST(last_updated AS 
DATETIME)>='" + myDateTime.ToString("dd/MM/yyyy hh:mm:ss tt")  + "'";
于 2013-04-23T10:36:44.580 回答
0

使用此代码

DateTime.ParseExact(yourString, "MM/dd/yyyy hh:mm:ss tt");
于 2013-04-23T09:29:11.770 回答