背景: 前段时间在百度经验看到一篇文章《怎样在电脑右下角显示你(爱人)的名字》,之前也听过这个小技巧,但没真正动手设置过,所以出于好奇就实践了一下。 设置完毕后的效果如下,右下角的时间区域增加了我的名字 “Danny” : 以上为背景。 没想到这个小技
背景:
前段时间在百度经验看到一篇文章《怎样在电脑右下角显示你(爱人)的名字》,之前也听过这个小技巧,但没真正动手设置过,所以出于好奇就实践了一下。
设置完毕后的效果如下,右下角的时间区域增加了我的名字 “Danny” :
以上为背景。没想到这个小技巧给我带来了麻烦(当然也是一次学习和提高的机会)。
该字符串未被识别伪有效的DateTime
正在做的新闻发布系统,数据库中存储时间的字段类型为datetime类型,并且字段值都是在服务器端自动获取的。想在客户端以“yyyy-MM-dd HH:mm:ss”的格式显示时间时,出现了一个问题:“该字符串未被识别伪有效的DateTime”:
错误页面如下图:
获取异常,异常提示为:
出错关键代码为:
lblCreateTime.Text = Convert.ToDateTime(news.CreateTime).ToString(); //【注】:lblCreate为前端显示页面一个Lable;news为查询后得到的“新闻”实体类,CreateTime为它的一个字段
猜测是我本机电脑时间格式的问题,在客户端获取了一下时间news.CreateTime的值,格式为:“2014/8/23 星期六 Danny 13:10:14”,而该条记录的时间在数据库中存储的值为 “2014-08-2313:10:14”。经过测试,如果news.CreateTime在数据库中存储的类型为varchar(),则不会产生此错误。于是可以知道,这里时间格式转化的过程是这样的:
在这个过程中,系统判断出从数据库中获取到的值为datetime类型,所以要将获取到的值(比如这里从数据库中获取的时间值为“2014-08-2313:10:14”)转化为本机的时间格式(比如我电脑的时间格式“2014/8/23 星期六 Danny13:10:14”),在进行最后一步格式转化时,系统则无法识别用户自定义的时间格式(比如这里的“2014/8/23 星期六 Danny13:10:14”),从而报错。
在网上找了两篇总结Asp.net中时间格式转化的文章:asp.net
格式化时间日期、Asp.net中时间格式化的几种方法。这么多种方法,大体上我把它分为两个方式:在界面代码(*.aspx)上转换
& 在后台代码(*.aspx.cs)上转换。
解决方法
解决这个问题用了两个办法:
1、如果数据库中存储时间的数据类型为datetime,那就避免在后台代码(*.aspx.cs)中转化时间格式,将格式转化的任务放到界面代码(*.aspx)上;
比如上面的例子中,无论获取的时间是什么格式的,在后台不要对这个时间的值进行任何操作(比如赋值等,否则系统会将时间隐式转换),而是直接在界面代码(*.aspx)用DataBinder、Eval等方法来直接进行格式化:
后台关键代码:
<span style="white-space:pre"> </span>DataTable dt = new NewsManager().SelectById(newsid); //这里得到的dt为从直接数据库中查询到的数据 <span style="white-space:pre"> </span> repNews.DataSource =dt; repNews.DataBind();
前台关键代码:
<span style="white-space:pre"> </span><repeater id="repNews" runat="server"> <itemtemplate> <p class="con_time"> 发布时间: </p> </itemtemplate> </repeater>
其实,大部分系统中的时间格式,那些格式转化函数还是“认识”的,但假如有的将自己的系统时间格式设置为“2014/8/23 星期六Danny 13:10:14”,有的设置为“2014/8/23 星期六胡玉洋 13:10:14”……,这些函数肯定猜不到那么多中自定义的情况。
所以,在设计软件的过程中,最好把客户端这个因素刨除在外,保证各种使用环境的兼容性,时间在数据库中产生,同样显示时也只显示数据库中的时间(避免客户端的过滤)。
2、将数据库中存储时间的数据类型改为varchar(),不过这时最好让这些时间是数据库中自动生成的(一个没有格式的输入也可能会导致输出错误),因为存储类型为varchar(),所以获取到的值也就被认为是一个字符串,这时在转换时间格式时就少了上图中【将获取的时间转化为客户端时间格式下的值】的步骤,直接将数据库中的时间字符串进行转化(这时那些转化函数是能识别数据库中的时间函数的),客户端的时间格式不再影响转换过程。
不过数据库中存储时间的类型如果为字符型也会带来一些麻烦:
数据库中的时间仅仅是用来显示、查找的,那么影响还不算大,但如果对时间字段进行一些算法如计算星期、DateDiff、DateAdd等,那就麻烦了,尤其实在大型数据查询中转换类型是会影响效率的
总结
数据库中存储日期的字段类型到底应该用varchar还是datetime ?这两种方法各有优势,datetime可以借用sql函数库中运算函数,增加了时间在各种运算上的效率;而varchar类型则可以在字符编码上显出优势。在 存储的时间将来不需要进行大量计算 的前提下,可以考虑选择varchar类型,反之,选择datetime类型。

Pour optimiser la requête lente MySQL, SlowQueryLog et Performance_Schema doivent être utilisées: 1. Activer SlowQueryLog et définir des seuils pour enregistrer la requête lente; 2. Utilisez Performance_schema pour analyser les détails de l'exécution de la requête, découvrir les goulots d'étranglement des performances et optimiser.

MySQL et SQL sont des compétences essentielles pour les développeurs. 1.MySQL est un système de gestion de base de données relationnel open source, et SQL est le langage standard utilisé pour gérer et exploiter des bases de données. 2.MySQL prend en charge plusieurs moteurs de stockage via des fonctions de stockage et de récupération de données efficaces, et SQL termine des opérations de données complexes via des instructions simples. 3. Les exemples d'utilisation comprennent les requêtes de base et les requêtes avancées, telles que le filtrage et le tri par condition. 4. Les erreurs courantes incluent les erreurs de syntaxe et les problèmes de performances, qui peuvent être optimisées en vérifiant les instructions SQL et en utilisant des commandes Explication. 5. Les techniques d'optimisation des performances incluent l'utilisation d'index, d'éviter la numérisation complète de la table, d'optimiser les opérations de jointure et d'améliorer la lisibilité du code.

La réplication maître-esclave Asynchrones MySQL permet la synchronisation des données via le binlog, améliorant les performances de lecture et la haute disponibilité. 1) L'enregistrement du serveur maître change en binlog; 2) Le serveur esclave lit le binlog via des threads d'E / S; 3) Le thread SQL du serveur applique le binlog pour synchroniser les données.

MySQL est un système de gestion de base de données relationnel open source. 1) Créez une base de données et des tables: utilisez les commandes CreateDatabase et CreateTable. 2) Opérations de base: insérer, mettre à jour, supprimer et sélectionner. 3) Opérations avancées: jointure, sous-requête et traitement des transactions. 4) Compétences de débogage: vérifiez la syntaxe, le type de données et les autorisations. 5) Suggestions d'optimisation: utilisez des index, évitez de sélectionner * et utilisez les transactions.

L'installation et les opérations de base de MySQL incluent: 1. Télécharger et installer MySQL, définir le mot de passe de l'utilisateur racine; 2. Utilisez des commandes SQL pour créer des bases de données et des tables, telles que CreateDatabase et CreateTable; 3. Exécuter les opérations CRUD, utiliser des commandes INSERT, SELECT, UPDATE, DELETE; 4. Créer des index et des procédures stockées pour optimiser les performances et implémenter une logique complexe. Avec ces étapes, vous pouvez créer et gérer les bases de données MySQL à partir de zéro.

InnodbBufferPool améliore les performances des bases de données MySQL en chargeant des données et des pages d'index dans la mémoire. 1) La page de données est chargée dans le tampon pour réduire les E / S du disque. 2) Les pages sales sont marquées et rafraîchies au disque régulièrement. 3) Élimination de la page de données de gestion de l'algorithme LRU. 4) Le mécanisme de lecture charge les pages de données possibles à l'avance.

MySQL convient aux débutants car il est simple à installer, puissant et facile à gérer les données. 1. Installation et configuration simples, adaptées à une variété de systèmes d'exploitation. 2. Prise en charge des opérations de base telles que la création de bases de données et de tables, d'insertion, d'interrogation, de mise à jour et de suppression de données. 3. Fournir des fonctions avancées telles que les opérations de jointure et les sous-questionnaires. 4. Les performances peuvent être améliorées par l'indexation, l'optimisation des requêtes et le partitionnement de la table. 5. Prise en charge des mesures de sauvegarde, de récupération et de sécurité pour garantir la sécurité et la cohérence des données.

La numérisation complète de la table peut être plus rapide dans MySQL que l'utilisation d'index. Les cas spécifiques comprennent: 1) le volume de données est petit; 2) Lorsque la requête renvoie une grande quantité de données; 3) Lorsque la colonne d'index n'est pas très sélective; 4) Lorsque la requête complexe. En analysant les plans de requête, en optimisant les index, en évitant le sur-index et en maintenant régulièrement des tables, vous pouvez faire les meilleurs choix dans les applications pratiques.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Listes Sec
SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

SublimeText3 version chinoise
Version chinoise, très simple à utiliser