如何使Mysql和windows IIS服务器时间的格式相同

本文关键字:时间 格式 服务器 IIS 何使 Mysql windows | 更新日期: 2023-09-27 18:09:30

我在使用时间查询mysql时遇到问题。

DateTime dt = DateTime.Now;
string datet = dt.ToString("yyyy-MM-dd hh:mm:ss"); //gives 2013-04-17 12:59:31

但同时,当我使用-->查询sql时

SELECT NOW()

它给出2013-04-17 00:59:24

当小时组件为上午12点(24小时(时,我的以下查询失败

我使用的查询是

 string q = "SELECT orderid,fname,subtotal FROM userinfo WHERE dtbook > '" + from + "' AND dtbook < '" + to + "'

当我在sql中运行以下查询时,将12更改为00

SELECT * FROM userinfo WHERE dtbook > CAST('2013-04-17 00:00:00' AS DATETIME)

我得到了正确的结果,但由于我必须计算从服务器到数据库的查询时间我的查询变成

SELECT * FROM userinfo WHERE dtbook > CAST('2013-04-17 12:00:00' AS DATETIME)

我已经在服务器上尝试了这两种方法来转换时间ToString("yyyy-MM-dd h:MM:ss"(和ToString("yyyy-MM-dd hh:MM:ss"(,但结果相同当00是24小时时,我如何获得小时成分??

如何使Mysql和windows IIS服务器时间的格式相同

好吧,立即的问题是您使用的是hh而不是HHhh是12小时值的说明符;HH是24小时值的说明符。

但是,您首先应该而不是将日期转换为字符串。您不应该将值转换为字符串并将其作为SQL语句的一部分,而应该使用参数化查询,并将参数设置为值作为DateTime

这样:

  • 您可以在SQL中避免CAST
  • 避免了有问题的字符串转换
  • 代码将更加清晰(您将能够在不涉及字符串串联的情况下看到SQL,并且您将代码与数据分离(
  • 您将养成编写参数化查询的习惯

您应该始终参数化您的SQL-主要是为了避免SQL注入攻击,但也为了上述所有好处。更普遍地说,在不必要的时候避免转换——每次转换都有可能出错。