如何使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小时时,我如何获得小时成分??
好吧,立即的问题是您使用的是hh
而不是HH
。hh
是12小时值的说明符;HH
是24小时值的说明符。
但是,您首先应该而不是将日期转换为字符串。您不应该将值转换为字符串并将其作为SQL语句的一部分,而应该使用参数化查询,并将参数设置为值作为DateTime
。
这样:
- 您可以在SQL中避免CAST
- 避免了有问题的字符串转换
- 代码将更加清晰(您将能够在不涉及字符串串联的情况下看到SQL,并且您将代码与数据分离(
- 您将养成编写参数化查询的习惯
您应该始终参数化您的SQL-主要是为了避免SQL注入攻击,但也为了上述所有好处。更普遍地说,在不必要的时候避免转换——每次转换都有可能出错。