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中添加title中的小图标

    webpack.prod.conf.js 这个文件中: 引入代码const path = require('path') :下面是进行配置: new HtmlWebpackPlugin({ filen ...

  2. Redmine 安装、搭建

    参考两个博客: 1.https://blog.csdn.net/g19881118/article/details/59476045 2.https://www.cnblogs.com/chendal ...

  3. 测试连接失败,因为初始化提供程序时发生错误,[DBNMPNTW] ConnectionOpen (CreateFile())

    此主题相关图片如下:错误.jpg 今天发布的程序,在其它电脑上运行没问题,就是其中一台电脑上运程报这个错.系统是Win7的查了好久,最后解决 方法如下: 在报错的电脑上,单击"开始" ...

  4. [python] 溜了,溜了,七牛云图片资源批量下载 && 自建图床服务器

    故事背景: 七牛云最近一波测试域名操作真是把我坑死了!这简直和百度赠送你2T网盘,之后再限速一样骚操作.于是,痛定思痛自己买个云主机.自己搭图床应用! 1.七牛图片批量下载到本地 1.1 曲折尝试 当 ...

  5. 深入理解Spring Redis的使用 (八)、Spring Redis实现 注解 自动缓存

    项目中有些业务方法希望在有缓存的时候直接从缓存获取,不再执行方法,来提高吞吐率.而且这种情况有很多.如果为每一个方法都写一段if else的代码,导致耦合非常大,不方便后期的修改. 思来想去,决定使用 ...

  6. [Swift]LeetCode114. 二叉树展开为链表 | Flatten Binary Tree to Linked List

    Given a binary tree, flatten it to a linked list in-place. For example, given the following tree: 1 ...

  7. [Swift]LeetCode386. 字典序排数 | Lexicographical Numbers

    Given an integer n, return 1 - n in lexicographical order. For example, given 13, return: [1,10,11,1 ...

  8. [Swift]LeetCode659. 分割数组为连续子序列 | Split Array into Consecutive Subsequences

    You are given an integer array sorted in ascending order (may contain duplicates), you need to split ...

  9. [Swift]LeetCode761. 特殊的二进制序列 | Special Binary String

    Special binary strings are binary strings with the following two properties: The number of 0's is eq ...

  10. Python面试真题第四节

    81.举例说明SQL注入和解决办法 82.s="info:xiaoZhang 33 shandong",用正则切分字符串输出['info', 'xiaoZhang', '33', ...