MySql中处理字符串时间,会默认把第一个数字当成年份处理。

在C#服务器中,使用Date.Now.ToString()生成的字符串时间,如果不指定字符串格式,C#会按照系统语言输出不同的字符串格式,如:

a. 美国: 06/01/2019 01:59:00 PM

b.中国: 2019/06/01 13:59:00

原因分析:进过翻阅很多资料,汇总一下,发现,Date.Now默认转字符串时跟一个类有关:System.Globalization.CultureInfo(提供有关特定区域性(对于非托管代码开发,则称为“区域设置”)的信息。 这些信息包括区域性的名称、书写系统、使用的日历、字符串的排序顺序以及对日期和数字的格式化设置。)

参考:https://docs.microsoft.com/zh-cn/dotnet/api/system.globalization.cultureinfo?view=netframework-4.7.2

可以通过属性:System.Threading.Thread.CurrentThread.CurrentCulture 获取当前线程使用的区域语言;这里,一般国内的服务器操作系统一般都是中文Windows系统,所以使用的英文版Windows或者linus系统等,会导致线程的区域语言有区别。

而微软通过这个类,对不同系统的用户做了人性化的处理,如:对时间的显示格式存在差别。设置后对服务器代码部署到不同地区的开发者来说,便于对日期等格式的统一化管理!

解决方案:

1-临时修改线程中的区域语言为中文模式:

System.Threading.Thread.CurrentThread.CurrentCulture=new System.Globalization.CultureInfo("zh-CN");

2-使用全局配置模式:globalization节点下添加属性:culture="zh-CN" uiCulture="zh-CN"

<system.web>
<compilation debug="true" targetFramework="4.5" />
<globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN" />
</system.web>

3-Date.Now.ToString("yyyy-MM-dd HH:mm:ss") 指定日期类型,避免使用:string.format(@"{0}",Date.Now)或者Date.Now.ToString()这样的默认字符串格式。

Date.Now.ToString("yyyy-MM-dd HH:mm:ss")

4-使用Mysql自带的获取当前时间方法: now()

select now()  --获取当前时间

总结:需要注意的事,前面2中解决方案解决了问题根源;后2中方案只是绕过了这个问题,但是对于后来的新同学可能还会犯同样的错误,所以推荐前面两种方案,这样在写当前时间的时候,你随意怎么写。

另外像:月/日/年 小时:分   这样的时间格式,SqlServer是支持的,这里给SqlServer的强大点个赞!!!

备注几个本人查阅很多资料的地址,或许对大家有其他参考价值:

https://docs.microsoft.com/zh-cn/dotnet/api/system.datetime?redirectedfrom=MSDN&view=netframework-4.7.2

https://www.c-sharpcorner.com/article/datetime-in-c-sharp/

错误实例一:如下面的代码,在英文版的windows系统下,会导致查询数据不准:应改为:Date.Now.ToString("yyyy-MM-dd HH:mm")

/// <summary>
/// (用户ID) => 用户优惠码可用数量
/// </summary>
/// <param name="userId">用户ID</param>
/// <returns></returns>
public static int GetCouponCount(int userId)
{
int count = ;
if (userId > )
{
List<string> whereList = new List<string>
{
string.Format("`{0}` = '{1}'", Coupon_user_mapping._USERID_, userId),
string.Format("`{0}` = '{1}'", Coupon_user_mapping._STATUS_, ECoupon.Status.可用.GetValue()),
string.Format("`{0}` > '{1}'", Coupon_user_mapping._USEENDTIME_, DateTime.Now)
};
string where = string.Join(" AND ", whereList);
whereList.Clear();
whereList = null;
Coupon_user_mappingBLL.Select(where, out count);
}
return count;
}

下面是本公司服务器时间测试截图:左侧为中文windows系统,右侧为英文版windows系统。   在设置CultureInfo区域语言后,英文的系统展示时间也可以为左侧的标准格式了。

Mysql语句中当前时间不能直接使用C#中的Date.Now传输的更多相关文章

  1. NET MVC全局异常处理(一) 【转载】网站遭遇DDoS攻击怎么办 使用 HttpRequester 更方便的发起 HTTP 请求 C#文件流。 Url的Base64编码以及解码 C#计算字符串长度,汉字算两个字符 2019周笔记(2.18-2.23) Mysql语句中当前时间不能直接使用C#中的Date.Now传输 Mysql中Count函数的正确使用

    NET MVC全局异常处理(一)   目录 .NET MVC全局异常处理 IIS配置 静态错误页配置 .NET错误页配置 程序设置 全局异常配置 .NET MVC全局异常处理 一直知道有.NET有相关 ...

  2. 【Java 与数据库】JDBC中日期时间的处理技巧

    JDBC中日期时间的处理技巧 详谈Java.util.Date和Java.sql.Date 基础知识 Java中用类java.util.Date对日期/时间做了封装,此类提供了对年.月.日.时.分.秒 ...

  3. 【推荐】PHP中格式化时间函数date与gmdate的区别 | 修改PHP的默认时区

    PHP中的时间有2个格式化函数:date()和gmdate(),在官方的文档中的描述为: date -- 格式化一个本地时间/日期 gmdate -- 格式化一个 GMT/UTC 日期/时间,返回的是 ...

  4. mysql时间格式化,按时间段查询MYSQL语句

    描述:有一个会员表,有个birthday字段,值为'YYYY-MM-DD'格式,现在要查询一个时间段内过生日的会员,比如'06-03'到'07-08'这个时间段内所有过生日的会员. SQL语句: Se ...

  5. mysql语句中把string类型字段转datetime类型

    mysql语句中把string类型字段转datetime类型   在mysql里面利用str_to_date()把字符串转换为日期   此处以表h_hotelcontext的Start_time和En ...

  6. ios开发中常用的也是最基本的mysql语句

    MySQL常用基本SQL语句小结——(转) sql语言不经常用,每次再用都隔好久的时间,以致最基本的都想不起来了,只好转一篇记着= - 找的时候方便 SQL分类:  DDL—数据定义语言(CREATE ...

  7. php中mysql语句的基本写法

    php中mysql语句的基本写法 php作为一门后台语言必须要与mysql数据库打交道,做到将内容存储到数据库以及数据库数据读写的操作,那么下面就来说下最近学习的一些东西: 在具体将之前先说一下编码的 ...

  8. mysql常处理用时间sql语句

    Mysql日期函数,时间函数使用的总结,以及时间加减运算(转) select timediff('23:40:00', ' 18:30:00'); -- 两时间相减SELECT substring( ...

  9. mysql数据库中查询时间

    项目中要对数据按时间处理,在数据库中,时间处理的格式如 2014-12-09 06:30:17 时间查询出来如下所示: 现在要查询具体有哪天的数据,应用substring函数,SQL如下: ) as ...

随机推荐

  1. 在vue中使用sass的配置的方法

    1.安装sass的依赖包 npm install --save-dev sass-loader //sass-loader依赖于node-sass npm install --save-dev nod ...

  2. 20175324 《Java程序设计》第七周学习总结

    教材学习内容总结 常用实用类 String类 - 程序可以直接使用String类,但不能进行扩展,即String类不可以有子类 - 常用构造方法 - String(char a[])用一个字符数组a创 ...

  3. Linux常用服务器搭建

    1.Linux常用服务器构建-ftp服务器 ftp服务器 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”. 用于Internet上的控制文件 ...

  4. External Snapshot management

    External Snapshot management Symptom As of at least libvirt 1.1.1, external snapshot support is inco ...

  5. java内存分页计算

    介绍三个最常用的分页算法 First(感觉这个最简单实用) //总记录数int rows=21; //每页显示的记录数int pageSize=5; //页数int pageSum=(rows-1)/ ...

  6. 【安富莱】【RL-TCPnet网络教程】第11章 RL-TCPnet调试方法

    第11章      RL-TCPnet调试方法 本章节为大家讲解RL-TCPnet的调试方法,RL-TCPnet的调试功能其实就是通过串口打印实时监控运行状态.而且RL-TCPnet的调试设置比较简单 ...

  7. LeetCode题解41.First Missing Positive

    41. First Missing Positive Given an unsorted integer array, find the first missing positive integer. ...

  8. Python基础综合运用——搭建名片管理系统

    综合应用 —— 名片管理系统 目标 综合应用已经学习过的知识点: 变量 流程控制 函数 模块 开发 名片管理系统 系统需求 程序启动,显示名片管理系统欢迎界面,并显示功能菜单 ************ ...

  9. Python内置函数(40)——map

    英文文档: map(function, iterable, ...) Return an iterator that applies function to every item of iterabl ...

  10. Http协议状态码总结

    一.http方法 方法名 说明 get 发送一个获取请求,服务器的响应会包含head与body部分 post 发送一个输入数据的请求,服务器的响应会包含head与body部分 head 服务器响应的只 ...