mysql+php中文乱码问题及mysql时间函数

合集下载

mysql数据库乱码问题

mysql数据库乱码问题

数据库读出乱码解决一、分析常见数据库问题修改MYSQL数据库,数据表,字段的编码(解决JSP乱码)要解决JSP乱码,首先就要了解JSP乱码的原因1.架设服务器安装MYSQL时的会让你选择一种编码,如果这种编码与你的网页不一致,可能就会造成JSP页面乱码2.在PHPMYADMIN或mysql-front等系统创建数据库时会让你选择一种编码,如果这种编码与你的网页不一致,也有可能造成JSP页面乱码3.创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成JSP页面乱码4.创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成JSP 页面乱码5.用户提交JSP页面的编码与显示数据的JSP页面编码不一致,就肯定会造成JSP页面乱码.如用户输入资料的JSP页面是big5码,显示用户输入的JSP页面却是gb2312,这种100%会造成JSP页面乱码6.字符集不正确要注意:1.平时你在某些网站看到的文字可能有几种编码,如你看到一个繁体字,它有可能是big5编码,也有可能是utf-8编码的,更有可能是gb码的,没错,也就是说有简体编码的繁体字,也有繁体编码的简体字,一定要了解这一点.如果你是做一个简体编码的网页,编码定为GB2312,如果有香港和台湾地区的访客提交繁体的信息,就可能会造成乱码,解决方法就是(1)将网站编码设为utf-8,这样可以兼容世界上所有字符,(2)如果网站已经运作了好久,已有很多旧数据,不能再更改简体中文的设定,那么建议将页面的编码设为GBK,GBK与GB2312的区别就在于:GBK能比GB2312显示更多的字符,要显示简体码的繁体字,就只能用GBK7.JSP连接MYSQL数据库语句指定的编码不正确8.JSP页面没有指定数据提交的编码,就会造成乱码:所以,JSP乱码的原因无非就是以上几种,知道原因之后,要解决JSP乱码的方法也容易多了我们一一来表达:1.如果安装mysql的编码已不能更改,很多朋友是购买虚拟主机建立网站,无权更改MYSQL的安装编码,这一关我们可以跳过,因为只要后面的步聚正确,一样能解决乱码问题2.修改数据库编码,如果是数据库编码不正确:可以在phpmyadmin执行如下命令:ALTER DATABASE`test`DEFAULT CHARACTER SET utf8COLLATE utf8_bin以上命令就是将test数据库的编码设为utf83.修改表的编码:ALTER TABLE`category`DEFAULT CHARACTER SET utf8COLLATE utf8_bin以上命令就是将一个表category的编码改为utf84.修改字段的编码:ALTER TABLE`test`CHANGE`dd``dd`VARCHAR(45)CHARACTER SET utf8COLLATEutf8_bin NOT NULL以上命令就是将test表中dd的字段编码改为utf85.如果是这种情况容易解决,只需检查下页面,修改源文件的charset即可,//这个正确就无问题了6.这种情况也是修改页面charset即可,7.在JSP连接数据库的语句中,private String url="jdbc:mysql://localhost/"+DB_NAME+"user="+LOGIN_NAME+"&password="+LOGIN_PASSWORD+"&characterEncoding=GBK";//相键要看characterEncoding8.这种乱码的情况,只需在页面开头加上request.setCharacterEncoding("GBK");指定提交的即可注意:按照以上方法修改以后只能保证你新插入的数据不会乱码,举个例:如果你用户已提交的数据是BIG5,你却想通过以上方法改为可以在GB2312的网页正确显示是不可能的,这种文字内码的变换只能通过另写程序来解决,请其它相关文章总结:先要判断JSP乱码是插入数据库之后乱码,还是JSP页面刚提交过来就乱码了,如果JSP 刚接收上一页面的数据显示就乱码了,肯定是字符集不对,可者没有加request.setCharacterEncoding("GBK");如果是数据库的原因就参考上面的2,3,4种方法可能是编码问题这样连接一下数据库看看jdbc:mysql://localhost:3306/xxxx useUnicode=true&characterEncoding=UTF-8看看能否有效果二、乱码案例使用MYSQL数据库,用JSP去连接结果发现出了很多问题,主要集中在乱码显示上面,实际开发中,想必这类问题是见怪不怪了。

JSP+MySQL中文乱码问题post提交乱码解决方案

JSP+MySQL中文乱码问题post提交乱码解决方案

JSP+MySQL中⽂乱码问题post提交乱码解决⽅案写了两个jsp页⾯index.jsp和mysql_insert.jsp。

数据处理流程为:在浏览器(chrome)上访问index.jsp后在其表单上输⼊数据,提交⾄mysql_insert.jsp,mysql_insert.jsp⾸先将接收到的数据按变量存⼊MySQL的html_db数据库的person_tb中(该表原有部分数据),然后mysql_insert.jsp再拿出该表中所有数据显⽰在mysql_insert.jsp页⾯上。

现在发现,当提交的数据中含有中⽂(⽐如变量姓名的值为中⽂)时,mysql_insert.jsp页⾯上显⽰新增的那条记录中的相应中⽂(姓名的值)乱码,其他数据都显⽰正常,查看数据库,发现也是相应的含有中⽂的变量值(姓名的值)乱码。

乱码情况如下图:index.jsp中第⼀⾏有语句:<%@ page contentType="text/html;charset=gb2312"%> ,在浏览器(chrome)中访问此页⾯时⽆乱码(主要指中⽂乱码,英⽂乱码现象还没遇见过)。

(试过将gb2312换成utf-8,访问后中⽂乱码)mysql_insert.jsp中第⼀⾏有语句:<%@page language="java" pageEncoding="UTF-8"%>,在浏览器中直接访问此页⾯时⽆乱码。

mysql_insert.jsp页⾯的代码如下:复制代码代码如下:<%@page language="java" pageEncoding="UTF-8"%><%@ page import="java.sql.*" %><HTML><HEAD><TITLE>add message into table </TITLE></HEAD><BODY><%String id=request.getParameter("id"); //从表单获得String name=request.getParameter("name"); //从表单获得String sex=request.getParameter("sex"); //从表单获得String age=request.getParameter("age"); //从表单获得try{/** 连接数据库参数 **/String driverName = "com.mysql.jdbc.Driver"; //驱动名称String DBUser = "root"; //mysql⽤户名String DBPasswd = "123456"; //mysql密码String DBName = "html_db"; //数据库名String connUrl = "jdbc:mysql://localhost/" + DBName + "?user=" + DBUser + "&password=" + DBPasswd;Class.forName(driverName).newInstance();Connection conn = DriverManager.getConnection(connUrl);Statement stmt = conn.createStatement();stmt.executeQuery("SET NAMES UTF8");String insert_sql = "insert into person_tb values('" + id + "','" + name + "','" + sex + "','" + age + "')";String query_sql = "select * from person_tb";try {stmt.execute(insert_sql);}catch(Exception e) {e.printStackTrace();}try {ResultSet rs = stmt.executeQuery(query_sql);while(rs.next()) {%>ID:<%=rs.getString("id")%> </br>姓名:<%=rs.getString("name")%> </br>性别:<%=rs.getString("sex")%> </br>年龄:<%=rs.getString("age")%> </br> </br><%}}catch(Exception e) {e.printStackTrace();}//rs.close();stmt.close();conn.close();}catch (Exception e) {e.printStackTrace();}%></body></html>我的数据库设置的是全部使⽤UTF-8编码,如下图:我的虚拟⽬录下的web.xml内容如下:tomcat/conf⽬录下的server.xml⽂件的内容如下:复制代码代码如下:<U><?xml version='1.0' encoding='utf-8'?></U><Server port="8005" shutdown="SHUTDOWN"><Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JasperListener" /><Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources><Resource name="UserDatabase" auth="Container"type="erDatabase"description="User database that can be updated and saved"factory="ers.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml" /></GlobalNamingResources><Service name="Catalina"><Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /><Engine name="Catalina" defaultHost="localhost"><Realm className="org.apache.catalina.realm.LockOutRealm"><Realm className="erDatabaseRealm" resourceName="UserDatabase"/></Realm><Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt"pattern="%h %l %u %t "%r" %s %b" /></Host></Engine></Service></Server>tomcat/conf⽬录下web.xml⽂件的主要内容如下:复制代码代码如下:<U><?xml version="1.0" encoding="UTF-8"?></U><web-app xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_3_0.xsd"version="3.0"><servlet><servlet-name>default</servlet-name><servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class><init-param><param-name>debug</param-name><param-value>0</param-value></init-param><init-param><param-name>listings</param-name><param-value>false</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet><servlet-name>jsp</servlet-name><servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class><init-param><param-name>fork</param-name><param-value>false</param-value></init-param><init-param><param-name>xpoweredBy</param-name><param-value>false</param-value></init-param><load-on-startup>3</load-on-startup></servlet><servlet-mapping><servlet-name>default</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!-- The mappings for the JSP servlet --><servlet-mapping><servlet-name>jsp</servlet-name><url-pattern>*.jsp</url-pattern><url-pattern>*.jspx</url-pattern></servlet-mapping><session-config><session-timeout>30</session-timeout></session-config><此处省略了mime-mapping的内容><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>现在我能想到的设置编码的地⽅也就只有这么多了,其他还有哪⾥需要设置编码?恳求指导。

MySQL中的错误处理与异常处理技巧

MySQL中的错误处理与异常处理技巧

MySQL中的错误处理与异常处理技巧引言:MySQL作为一种关系型数据库管理系统,在数据存储和访问方面具有广泛的应用。

然而,在使用MySQL过程中,错误和异常是无法避免的。

因此,了解MySQL中的错误处理和异常处理技巧变得非常重要。

本文将探讨MySQL中常见的错误类型、错误处理的方法和异常处理的技巧,帮助读者更好地理解和处理MySQL中的问题。

一、MySQL中的错误类型1. 语法错误:语法错误是最常见的错误类型之一。

当用户执行一条SQL语句,但语法错误时,MySQL将无法正确解析该语句,并返回相应的错误信息。

例如,在执行SELECT语句时,如果缺少FROM关键字,就会出现语法错误。

2. 数据类型错误:MySQL有许多数据类型,如整型、浮点型、字符串等。

如果用户在执行SQL 语句时,将错误的数据类型分配给某一字段,将会触发数据类型错误。

例如,将一个字符串值插入到整型字段中。

3. 空指针错误:当用户在执行SQL语句时,引用了一个空指针时,将会出现空指针错误。

例如,如果用户执行了一个SELECT语句,但该语句所查询的表不存在,则会触发空指针错误。

二、错误处理的方法1. 错误代码:在MySQL中,每个错误都有一个对应的错误代码。

当执行一条SQL语句时,如果出现错误,MySQL会返回一个错误代码。

用户可以通过判断该错误代码,从而进行相应的错误处理。

例如,错误代码为1062表示重复键值错误。

2. 错误消息:除了错误代码外,MySQL还会返回相应的错误消息。

错误消息通常包含了错误的详细信息,如错误的原因、出错的位置等。

用户可以通过错误消息来定位错误,并采取相应的处理措施。

3. 日志文件:MySQL还提供了日志文件功能,记录了MySQL的运行状态、执行的SQL语句等信息。

用户可以通过查阅日志文件,找到出错的原因,并进行相应的错误处理。

在配置MySQL服务器时,可以设置不同级别的错误日志,以满足不同的需求。

三、异常处理的技巧1. 异常处理语句:在MySQL中,用户可以使用BEGIN和END关键字来定义一段代码块。

MYSQL数据库使用UTF-8中文编码乱码的解决办法

MYSQL数据库使用UTF-8中文编码乱码的解决办法

MYSQL数据库使⽤UTF-8中⽂编码乱码的解决办法1.⽤phpmyadmin创建数据库和数据表创建数据库的时候,请将“整理”设置为:“utf8_general_ci”或执⾏语句:复制代码代码如下:CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;创建数据表的时候:如果是该字段是存放中⽂的话,则需要将“整理”设置为:“utf8_general_ci”,如果该字段是存放英⽂或数字的话,默认就可以了。

相应的SQL语句,例如:CREATE TABLE `test` (`id` INT NOT NULL ,`name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,PRIMARY KEY ( `id` )) ENGINE = MYISAM ;2.⽤PHP读写数据库在连接数据库之后:复制代码代码如下:$connection = mysql_connect($host_name, $host_user, $host_pass);加⼊两⾏:mysql_query("set character set 'utf8'");//读库mysql_query("set names 'utf8'");//写库就可以正常的读写MYSQL数据库了。

⽤的appserv-win32-2.5.10做的环境,装这个包的时候⽤默认的utf8编码。

在写数据库连接⽂件时,写成:$conn = mysql_connect("$host","$user","$password");mysql_query("SET NAMES 'UTF8'");mysql_select_db("$database",$conn);然后在做页⾯时,注意这句:复制代码代码如下:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />这样不管输⼊数据库的中⽂,还是页⾯显⽰,就都正常了。

网页中文乱码完美解决方案

网页中文乱码完美解决方案

网页中文乱码<meta http-equiv="Content-Type" content="text/html; charset=gb2312">既然后面charset设置为gb2312,那么你打开这个网页,然后另存,保存的时候记得把编码改成gb2312,不然的话charset就会误导浏览器,这样就会乱码了。

2.php编网页出现乱码,我把编码改成utf-8 前台显示正常了,但是有东西输入到数据库再提取出来还是不正常3.apache+php+mysql 为何会出现乱码我们在做PHP项目的时候,经常会遇到中文乱码的问题,有时候编码问题还导致MYSQL的报错。

中文乱码总共有三个原因1:APACHE服务器设置导致乱码2:PHP,或者HTML页面编码导致中文乱码3:MYSQL数据库的表以及字段编码导致中文乱码我们分别从这三个部分来探究PHP程序设计中的编码问题在这之前我们要了解一些基本理论:1、文件编码每个文件在保存的时候都可以选择以什么编码保存,例如用WINDOWS的记事本创建一个文件可以选择ANSI 以及UTF8等等编码。

我们选择了什么编码该文件就以这种编码方式保存在硬盘上。

读取该文件数据的时候也会指定一种编码来打开,如果指定的编码与文件保存的时候的编码不一样的话就会出现乱码2、HTML的编码在网页头部一般有这样一个区域这个的意思是让客户端知道,接下来输出的是html代码(text/html),并且以下输出的内容都将是utf-8编码的。

如果我们用记事本创建一个HTML文件该文件包含但是在保存的时候却以ANSI编码格式保存,那么我们用浏览器打开这个文件时,浏览器看见META 行的UTF8编码设置后就将文件以UTF8格式输出,而文件本来是ANSI编码,这样便出现了中文乱码。

一:APACHE服务器编码在APACHE配置文件中有一行是编码的设置默认的是AddDefaultCharset ISO-8859-1,大部分人认为应该将这句改为AddDefaultCharset UTF-8 。

mysql中Incorrectstringvalue乱码问题解决方案

mysql中Incorrectstringvalue乱码问题解决方案

mysql中Incorrectstringvalue乱码问题解决⽅案mysql中Incorrect string value乱码问题解决⽅案你是否遇到过类似以下错误?java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x9C' for column 'content' at row 1.产⽣这种异常的原因在于,mysql中的utf8编码最多会⽤3个字节存储⼀个字符,如果⼀个字符的utf8编码占⽤4个字节(最常见的就是ios中的emoji表情字符),那么在写⼊数据库时就会报错。

mysql从5.5.3版本开始,才⽀持4字节的utf8编码,编码名称为utf8mb4(mb4的意思是max bytes 4),这种编码⽅式最多⽤4个字节存储⼀个字符。

要想证明这个问题,可以执⾏以下sql:select * frominformation_schema.CHARACTER_SETSwhere CHARACTER_SET_NAME like 'utf8%'结果如图:因此,要解决上述异常的发⽣,需要使⽤utf8mb4编码。

解决数据库编码后,还需要解决客户端Connection连接对象使⽤的编码问题。

调⽤创建的Connection对象执⾏以下sql:conn.createStatement().execute("SET names 'utf8mb4'");如果项⽬中使⽤了DataSource数据源,只需要对数据源进⾏相关配置即可,这⾥以apache的DBCP数据源为例讲解,在spring框架下配置如下:<!-- 数据源 --><bean id="dataSource" class="mons.dbcp.BasicDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"></property><property name="url" value="jdbc:mysql://${${data-source.prefix}.data-source.host-name}:3306/${${data-source.prefix}.data-source.db-name}?characterEncoding=utf8&amp;autoReconnect=true&amp;failOverReadOnly=false&amp;maxReconnec <property name="username" value="${${data-source.prefix}ername}" /><property name="password" value="${${data-source.prefix}.data-source.password}" /><property name="maxActive" value="150" /><property name="maxIdle" value="2" /><property name="testOnBorrow" value="true" /><property name="testOnReturn" value="true" /><property name="testWhileIdle" value="true" /><property name="validationQuery" value="select 1" /><!-- 此配置⽤于在创建Connection对象时执⾏指定的初始化sql --><property name="connectionInitSqls"><list><value>set names 'utf8mb4'</value></list></property></bean>以下解释引⽤⾃mysql参考⼿册:SET NAMES 'charset_name'SET NAMES显⽰客户端发送的SQL语句中使⽤什么字符集。

PHPword 中文乱码,终极解决方案版+

PHPword 中文乱码,终极解决方案版+

PHPword中文乱码,终极解决方案版+在数字化办公的浪潮中,文档处理成了我们日常生活中不可或缺的一部分。

尤其是PHPword库,它让PHP开发者能够轻松Word文档。

但在实际应用中,中文乱码问题一直困扰着无数开发者。

今天,就让我这位有着十年方案写作经验的大师,来为大家揭晓终极解决方案!一、问题分析1.编码不一致编码不一致是导致中文乱码的主要原因。

PHPword默认使用的是UTF-8编码,但如果你的源文件、数据库或者其他环节使用了其他编码,比如GBK,那么中文乱码就出现了。

2.PHPword库版本问题不同版本的PHPword库,对中文的支持程度不同。

有些老版本的PHPword库可能存在中文乱码问题,而新版本则修复了这些问题。

3.字体问题Word文档中的字体如果不支持中文,也会导致中文乱码。

二、解决方案1.保持编码一致确保你的PHP代码、源文件、数据库等所有环节都使用UTF-8编码。

这样,从源头上避免编码不一致导致的中文乱码问题。

2.更新PHPword库检查你使用的PHPword库版本,如果发现是老版本,尽快升级到最新版本。

新版本的PHPword库对中文支持更好,可以解决中文乱码问题。

3.设置字体在Word文档时,设置一个支持中文的字体。

例如,你可以使用微软雅黑、宋体等字体。

具体操作如下:php$section->setFontFamily('微软雅黑');4.修改PHPword源码phppublicfunction__construct($text,$font=null,$bold=false,$ italic=false,$underline=null,$encoding='UTF-8') {//$this->encoding=$encoding;}phppublicfunctionsetText($text){//if($this->encoding=='UTF-8'){$text=mb_convert_encoding($text,'UTF-8','UTF-8');}//}这样,PHPword在处理文本时,会根据指定的编码进行转换,从而解决中文乱码问题。

MySQL中文乱码问题的解决方法

MySQL中文乱码问题的解决方法

MySQL中文乱码问题的解决方法在使用MySQL数据库过程中,经常会遇到中文乱码的问题。

这是由于MySQL默认使用的字符集是Latin1,而大部分中文系统使用的是UTF-8字符集所致。

本文将介绍在MySQL中解决中文乱码问题的几种方法。

一、修改MySQL配置文件MySQL配置文件(f)是MySQL服务器的设置文件,通过修改该文件可以改变MySQL的默认字符集。

在Linux系统中,该文件通常位于/etc/mysql/f或者/etc/f。

在Windows系统中,该文件通常位于MySQL安装目录下的my.ini文件。

步骤如下:1. 找到f或my.ini文件并打开。

2. 在[mysqld]部分添加或修改以下内容:```[mysqld]character-set-server=utf8collation-server=utf8_general_ci```3. 保存文件并重启MySQL服务。

二、修改数据库、数据表、字段字符集如果修改MySQL配置文件没有解决中文乱码问题,可以尝试直接修改数据库、数据表、字段字符集。

1. 修改数据库字符集可以使用ALTER DATABASE语句修改数据库的字符集。

例如:```ALTER DATABASE database_name CHARACTER SET utf8 COLLATEutf8_general_ci;```2. 修改数据表字符集可以使用ALTER TABLE语句修改数据表的字符集。

例如:```ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;```3. 修改字段字符集可以使用ALTER TABLE语句修改字段的字符集。

例如:```ALTER TABLE table_name MODIFY column_name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci;```其中,table_name为表名,column_name为字段名。

史上最全的PHP+MySql中文乱码解决方案

史上最全的PHP+MySql中文乱码解决方案

我相信PHPmyadmin里查看是乱码,调用出来的话肯定100%也是乱码。

乱码问题其实也就是编码不一致导致的。

要解决这个问题需要回顾乱码问题出现以前的操作是否使用的是同一种编码。

总之一句话,要解决PHP中文乱码最好最快的解决办法就是:页面申明的编码与数据库内部编码一致,如果页面申请的页码与数据库内部编码不一致时,就设定连接编码mysql_query(”SET NAMES XXX”); XXX为连接编码。

一定可以解决乱码的问题。

在mysql+php程序开发中,总结了产生乱码原因:mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码.MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码.如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码.PHP页面字符集不正确.PHP连接MYSQL数据库语句指定的编码不正确.一.首先是PHP网页的编码1. php文件本身的编码与网页的编码应匹配a. 如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/html; charset=gb2312″),静态页面添加<metahttp-equiv=”Content-Type” content=”text/html; charset=gb2312″>,所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。

b. 如果欲使用utf-8编码,那么php要输出头:header(“Content-Type: text/html; charset=utf-8″),静态页面添加<metahttp-equiv=”Content-Type” content=”text/html; charset=utf-8″>,所有文件的编码格式为utf-8。

关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)

关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)

关于Mysql中⽂乱码问题该如何解决(乱码问题完美解决⽅案)最近两天做项⽬总是被乱码问题困扰着,这不刚把mysql中⽂乱码问题解决了,下⾯⼩编把我的解决⽅案分享给⼤家,供⼤家参考,也⽅便以后⾃⼰查阅。

⾸先:⽤show variables like “%colla%”;show varables like “%char%”;这两条命令查看数据库与服务端的字符集设置如果查看出来都是gbk2312,或 gbk,那么就只能⽀持简体中⽂,繁体和⼀些特殊符号是不能插⼊的,我们只有修改字符集为UTF-8,修改⽅法如下:⽤记事本或UitraEdit打开mysql数据库安装⽬录下的my.ini⽂件打开,然后Ctrl+F搜索default-character-set,将后⾯的字符集修改为UTF8,注意要修改两个地⽅,⼀个事客户端的,⼀个是服务端的。

然后保存,重启mysql服务、、进去继续⽤show variables like “%colla%”;show varables like “%char%”;着两条语句查询⼀下字符集。

如图:到此就配置完成了。

注意:如果以前建有数据库没有删除的请⽤ show database 数据库名;和 show create table 表名;查看⼀下数据库和表的字符集是否为UTF8 ,因为修改my.ini⽂件,它不能修改原来数据库的的字符集。

在命令⾏下⾯可以⽤alter database 数据库名 character set “字符集”;命令来修改数据库字符集还有⼀点要注意的是,修改为UTF8以后,在命令⾏下⾯中⽂是乱码的,只输出到页⾯或控制台是正常的,这个问题我也上⽹查了⼀下,貌似命令⾏下⾯不⽀持UTF8,我也不太清楚。

当修改以后,在命令⾏下⾯如果要插⼊中⽂,可以在插⼊语句之前执⾏,set names gbk2312;就可以插⼊中⽂了,但是不能插⼊繁体和⼀些特殊符号。

以上就是这⼏天解决乱码的成果。

使用MySQL的日期和时间函数处理日期和时间数据

使用MySQL的日期和时间函数处理日期和时间数据

使用MySQL的日期和时间函数处理日期和时间数据MySQL是一个功能强大的关系型数据库管理系统,广泛应用于各种类型的应用程序中。

在数据库中,日期和时间数据是常见的数据类型之一。

MySQL提供了许多日期和时间函数,可以帮助我们处理和操作这些数据。

本文将介绍如何使用MySQL的日期和时间函数处理日期和时间数据。

1. 日期和时间数据类型在MySQL中,我们可以使用不同的数据类型来存储日期和时间数据。

其中,最常用的类型是DATE、TIME、DATETIME和TIMESTAMP。

- DATE类型用于存储日期,格式为'YYYY-MM-DD'。

例如,'2022-01-01'表示2022年1月1日。

- TIME类型用于存储时间,格式为'HH:MM:SS'。

例如,'10:30:00'表示10点30分0秒。

- DATETIME类型用于存储日期和时间,格式为'YYYY-MM-DD HH:MM:SS'。

例如,'2022-01-01 10:30:00'表示2022年1月1日10点30分0秒。

- TIMESTAMP类型也用于存储日期和时间,格式与DATETIME相同。

但是,TIMESTAMP类型的取值范围比DATETIME更广,可以存储的时间范围是从'1970-01-01 00:00:01'到'2038-01-19 03:14:07'。

2. 日期和时间函数2.1. NOW()NOW()函数返回当前日期和时间。

它的语法如下:SELECT NOW();2.2. CURDATE()CURDATE()函数返回当前日期。

它的语法如下:SELECT CURDATE();2.3. CURTIME()CURTIME()函数返回当前时间。

它的语法如下:SELECT CURTIME();2.4. YEAR()YEAR()函数用于提取日期或日期时间值的年份。

Mysql中文乱码问题完美解决方案

Mysql中文乱码问题完美解决方案

转载:Mysql中文乱码的解决方法第一种方法,很精辟的总结:经常更换虚拟主机,而各个服务商的MYSQL版本不同,当导入数据后,总会出现乱码等无法正常显示的问题,查了好多资料,总结出自己的一点技巧:WINDOWS 下导入应该这样使用MYSQL的命令在DOS 命令下进入mysql的bin目录下,输入mysql -uroot -p密码数据库名称<要恢复的数据库, 例如我们要把D盘的一个名称为test.sql的数据库恢复到本地的test2这个数据库,那么就这样: mysql -uroot -p密码test2以前的国外主机用的Mysql是4.x系列的,感觉还比较好,都无论GBK和UTF-8都没有乱码,没想到新的主机的Mysql是5.0版本的,导入数据后,用Php读出来全是问号,乱码一片,记得我以前也曾经有过一次切换出现乱码的经验,原因肯定是Mysql版本之间的差异问题。

只好查资料,发现了一个解决方法,就是在mysql_connect后面加一句SET NAMES UTF8,即可使得UTF8的数据库消除乱码,对于GBK的数据库则使用SET NAMES GBK,代码如下:$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);mysql_query("SET NAMES 'GBK'");数据库字符集为utf-8连接语句用这个mysql_query("SET NAMES 'UTF8'");mysql_query("SET CHARACTER SET UTF8");mysql_query("SET CHARACTER_SET_RESULTS=UTF8'");还有个方法就是,如果你自己的机器的话,可以更改MYSQL字符集,一般在MYSQ4和MYSQL5这两个版本中有效。

MySQL字符集GBK、GB2312、UTF8区别解决MYSQL中文乱码问题

MySQL字符集GBK、GB2312、UTF8区别解决MYSQL中文乱码问题

MySQL字符集GBK、GB2312、UTF8区别解决MYSQL中⽂乱码问题character-set-server/default-character-set:服务器字符集,默认情况下所采⽤的。

character-set-database:数据库字符集。

character-set-table:数据库表字符集。

优先级依次增加。

所以⼀般情况下只需要设置character-set-server,⽽在创建数据库和表时不特别指定字符集,这样统⼀采⽤character-set-server字符集。

character-set-client:客户端的字符集。

客户端默认字符集。

当客户端向服务器发送请求时,请求以该字符集进⾏编码。

character-set-results:结果字符集。

服务器向客户端返回结果或者信息时,结果以该字符集进⾏编码。

在客户端,如果没有定义character-set-results,则采⽤character-set-client字符集作为默认的字符集。

所以只需要设置character-set-client字符集。

要处理中⽂,则可以将character-set-server和character-set-client均设置为GB2312,如果要同时处理多国语⾔,则设置为UTF8。

解决乱码的⽅法是,在执⾏SQL语句之前,将MySQL以下三个系统参数设置为与服务器字符集character-set-server相同的字符集。

character_set_client:客户端的字符集。

character_set_results:结果字符集。

character_set_connection:连接字符集。

设置这三个系统参数通过向MySQL发送语句:set names gb2312UTF-8:Unicode Transformation Format-8bit,允许含BOM,但通常不含BOM。

是⽤以解决国际上字符的⼀种多字节编码,它对英⽂使⽤8位(即⼀个字节),中⽂使⽤24为(三个字节)来编码。

中文乱码问题

中文乱码问题

一、中文乱码问题及其解决方法中文乱码原因主要有两方面,Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。

首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字节流的,如果Java 和JSP编译成class文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。

基于这种乱码,建议在Java文件中尽量不要写中文(注释部分不参与编译,写中文没关系),如果必须写的话,尽量手动带参数-ecoding GBK或-ecoding gb2312或-ecoding UTF-8编译;对于JSP,在文件头加上<%@ page contentType="text/html;charset=GBK"%>或<%@ page contentType="text/html;charset=gb2312"%>基本上就能解决这类乱码问题。

1.解决HTML页面中的中文问题:为了使HTML页面很好地支持中文,就必须在每个HTML页面的头部增加如下代码:<HEAD>。

<META http-equiv=Content-Type content="text/html;charset=gb2312">。

<HEAD>2、解决JSP页面中的中文问题为了使JSP页面很好地支持中文,就必须在每个JSP页面的头部增加如下代码:<%@ page contentType="text/html;charset=gb2312" language="java"%>3.解决Servlet响应结果的中文问题为了使Servlet页面很好地支持中文,就必须在每个Servlet页面的头部增加如下代码:response.setCharacterEncoding("gb2312");4.解决页面数据传输的中文问题为了使中文数据在各页面(组件)之间正常传递,最佳的方法就是采用编码过滤器来解决。

MySQL中的时间处理函数与用法详解

MySQL中的时间处理函数与用法详解

MySQL中的时间处理函数与用法详解近年来,随着数据分析的兴起,时间处理在数据库管理系统中变得愈发重要。

无论是在数据仓库还是在日常的应用中,时间数据的处理都是不可或缺的。

MySQL作为一款开源的关系型数据库管理系统,提供了丰富的时间处理函数和工具,让我们能够更轻松地处理和分析时间数据。

本文将深入探讨MySQL中的时间处理函数与用法,帮助读者更好地理解与使用它们。

一、时间数据类型在深入了解MySQL的时间处理函数之前,我们首先需要了解MySQL中的时间数据类型。

MySQL提供了多种时间相关的数据类型,常用的有DATE、TIME、DATETIME和TIMESTAMP。

这些数据类型分别用于存储日期、时间、日期时间和时间戳。

时间戳是指自1970年1月1日以来的秒数,常用于记录事件的发生时间。

在MySQL中,日期和时间的存储格式是固定的,因此我们需要使用适当的函数来处理和操作它们。

二、获取当前时间在许多应用中,我们需要获取当前的日期和时间。

MySQL提供了多种函数来获取当前时间,包括NOW()、CURDATE()、CURTIME()和CURRENT_TIMESTAMP()等。

这些函数可以根据系统的当前时间返回相应的日期和时间。

例如,使用NOW()函数可以获取当前的日期和时间,如下所示:SELECT NOW();返回结果可能类似于:2021-04-20 10:30:00除了获取当前时间,我们还可以使用这些函数进行日期和时间的加减运算,以满足特定需求。

例如,我们可以使用DATE_ADD()函数向当前日期添加一段时间,如下所示:SELECT DATE_ADD(NOW(), INTERVAL 1 HOUR);这将返回当前时间加上一小时后的结果。

三、时间格式化在处理时间数据时,有时我们需要将其格式化为特定的模式。

MySQL提供了DATE_FORMAT()函数来实现这一功能。

该函数接受一个时间戳和一个格式字符串作为参数,返回按照格式字符串指定的模式格式化后的结果。

MySQL存储过程中出现的中文乱码

MySQL存储过程中出现的中文乱码
按照网上搜到的答案应该就没有问题,但是很奇怪在执行存储过程(包含中文字段)语句,时候仍然提示。字段中文1136错误。 因为在以前的项目中也用到mysql,不用给存储过程参数设置为utf8,但是实在解决不了,就只能设参数的时候,加上utf8 设置如下:
在执行存储过程的时候,一切正常了。
因为在以前的项目中也用到mysql不用给存储过程参数设置为utf8但是实在解决不了就只能设置参数的时候加上utf8
MySQL存 储 过 程 中 出 现 的 中 文 乱 码
坑1:默认是MySQL table中没有设置成utf8格式 执行下面代码: 坑2:
使用命令:show variables like 'character%'; 结果:

MySQL的中文UTF8乱码问题

MySQL的中文UTF8乱码问题

MySQL的中⽂UTF8乱码问题从MySQL⽀持Unicode后,为了与时俱进,我们的web程序也开始考虑⽤UTF8了。

其实UTF8也⽤了好⼏年了,程序基本能跑,没什么⼤问题,但是数据倒换的时候,总是遇到不爽的事情。

【问题现象】⽹页xxx.php⽤EditPlus另存为UTF8格式,MySQL在my.ini⾥设置default-character-set=utf8,建表时加了CREATE TABLE`xxx ` (myname varchar(255)) ENGINE=MyISAM DEFAULT CHARSET=utf8,⽤xxx.php执⾏insert/update/select出来的都是中⽂,貌似没问题,但是⽤phpMyAdmin看select是乱码,⽤第三⽅⼯具软件(如SQLyog)看select也是乱码,mysqldump也是乱码,很不爽。

当然,如果你建表的时候,选择了binary/varbinary/blob类型,不会发现乱码,因为指定的是⼆进制保存,MySQL保存数据时就没有编码的概念了。

【查找问题】虽然在my.ini⾥设置default-character-set=utf8,但是执⾏以下命令时有新发现:mysql> SHOW VARIABLES LIKE 'character%';+----------------------------------------+-------------------------| Variable_name | Value+----------------------------------------+-------------------------| character_set_client | latin1| character_set_connection | latin1| character_set_database | utf8| character_set_filesystem | binary| character_set_results | latin1| character_set_server | utf8| character_set_system | utf8| character_sets_dir | D:\mysql\share\charsets\+----------------------------------------+-------------------------8 rows in set (0.00 sec)mysql> SHOW VARIABLES LIKE 'collation_%';+---------------------------------------+------------------| Variable_name | Value+---------------------------------------+------------------| collation_connection | latin1_swedish_ci| collation_database | utf8_general_ci| collation_server | utf8_general_ci+--------------------------------------+------------------3 rows in set (0.00 sec)发现Value列⾥⾯不全是utf8,仍然有部分是latin1,⽐如其中的client和connection。

PHP乱码问题,UTF-8乱码常见问题小结

PHP乱码问题,UTF-8乱码常见问题小结

PHP乱码问题,UTF-8乱码常见问题⼩结1.在head后,title前加⼊⼀⾏:<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />顺序不能错,⼀定要在显⽰的标题有可能是乱码!2.html⽂件编码问题:点击编辑器的菜单:“⽂件”->“另存为”,可以看到当前⽂件的编码,确保⽂件编码为:UTF-8,如果是ANSI,需要将编码改成:UTF-8。

3.HTML⽂件头BOM问题:将⽂件从其他的编码转换成UTF-8编码时,有时候会在⽂件的最开始加上⼀个BOM标签,在个BOM标签可能会导致浏览器在显⽰中⽂的时候出现乱码。

删除这个BOM标签的⽅法:1.可以⽤Dreamweaver打开⽂件,并重新保存,即可以去除BOM标签!2.可以⽤EditPlus打开⽂件,并在菜单“⾸选项”->“⽂件”->"UTF-8标识",设置为:“总是删除签名”,然后保存⽂件,即可以去除BOM标签!4.WEB服务器UTF-8编码问题:如果你按以上所列的步骤做了,还是有中⽂乱码问题,请检查你的所使⽤的WEB服务器的编码问题如果你使⽤的是Apache,请将配置⽂件⾥的:charset 设成:utf-8(这⾥仅列出⽅法,具体格式请参考apache的配置⽂件) 如果你使⽤的是Nginx,请将nginx.conf⾥的:charset 设成 utf-8,具体找到 "charset gb2312;"或者类似的语句,改成:“charset utf-8;”。

1.在代码开始出加⼊⼀⾏:header("Content-Type: text/html;charset=utf-8");2.PHP⽂件编码问题点击编辑器的菜单:“⽂件”->“另存为”,可以看到当前⽂件的编码,确保⽂件编码为:UTF-8,如果是ANSI,需要将编码改成:UTF-8。

mysql 时区转换函数

mysql 时区转换函数

mysql 时区转换函数MySQL 是一种常见的关系型数据库管理系统,时区转换在实际工作中经常会用到。

为了方便开发人员对时区进行转换,MySQL 中提供了相应的函数,下面我们就来详细介绍一下。

一、概述MySQL 中提供了多个时区转换函数,分别包括 CONVERT_TZ、TIMESTAMP、ADDTIME 等,下面我们分别介绍每个函数的作用及用法。

二、CONVERT_TZ 函数CONVERT_TZ 函数用于将一个日期时间从一个时区转换为另一个时区。

具体格式如下:CONVERT_TZ(dt,from_tz,to_tz)其中,dt 表示要转换的日期时间,from_tz 表示输入日期时间的时区,to_tz 表示需要转换到的时区。

例如,我们需要将北京时间转换为纽约时间,可以使用如下语句:SELECT CONVERT_TZ('2021-07-01 12:00:00','+08:00','-05:00');三、TIMESTAMP 函数TIMESTAMP 函数用于将指定的日期时间字符串转换为 Unix 时间戳形式,类似于 PHP 中的 time 函数。

具体格式如下:UNIX_TIMESTAMP(dt)其中,dt 表示要转换的日期时间字符串。

例如,我们需要将2021-07-01 12:00:00 转换为 Unix 时间戳,可以使用如下语句:SELECT UNIX_TIMESTAMP('2021-07-01 12:00:00');四、ADDTIME 函数ADDTIME 函数用于在一个日期时间上添加一个时间量,支持的时间量包括天、小时、分钟和秒。

具体格式如下:ADDTIME(dt,time)其中,dt 表示要添加时间量的日期时间,time 表示要添加的时间量,可以使用时间格式或者数字格式。

例如,我们需要在 2021-07-01 12:00:00 上添加 2 天的时间,可以使用如下语句:SELECT ADDTIME('2021-07-01 12:00:00','2 00:00:00');以上就是 MySQL 中常用的几个时区转换函数的详细介绍,希望对大家在实际开发中有所帮助。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

mysql+php中文显示乱码的解决mysql+php中文显示乱码的解决建议数据库用utf8编码问题汇总:1.mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码.2.MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.3.MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.4.用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP 页面乱码.5.如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码.6.PHP页面字符集不正确.7.PHP连接MYSQL数据库语句指定的编码不正确.使用mysql+php产生乱码的原因都了解得很清楚了,那么解决就不困难了.针对不同问题的解决方法:1.mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码.修改数据库编码,如果是数据库编码不正确,可以在phpmyadmin 执行如下命令:ALTER DATABASE 'test' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 以上命令就是将test数据库的编码设为utf8.2.MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.修改表的编码:ALTER TABLE 'category' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 以上命令就是将一个表category的编码改为utf8.3.MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.修改字段的编码:ALTER TABLE 'test' CHANGE 'dd' 'dd' VARCHAR( 45 ) CHARACTER SET utf8COLLATE utf8_bin NOT NULL以上命令就是将test表中 dd的字段编码改为utf8.4.用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP 页面乱码.如果是这种情况容易解决,只需检查下页面,修改源文件的charset即可.5.如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码.这种情况也是修改页面charset即可.6.PHP页面字符集不正确.为了避免PHP页面乱码的发生,PHP页面开始第一句header("content-type:text/html; charset=utf-8");//强行指定页面的编码,以避免乱码7.PHP连接MYSQL数据库语句指定的编码不正确.在连接数据库的语句中.mysql_connect('localhost','user','password');mysql_select_db('my_db');mysql_query("set names utf8;"); //select 数据库之后加多这一句mysql日期函数的总结DATE_FORMAT(date,format)根據format字符串格式化date值。

下列修飾符可以被用在format字符串中: %M 月名字(January……December)%W 星期名字(Sunday……Saturday)%D 有英語前綴的月份的日期(1st, 2nd, 3rd, 等等。

)%Y 年, 數字, 4 位%y 年, 數字, 2 位%a 縮寫的星期名字(Sun……Sat)%d 月份中的天數, 數字(00……31)%e 月份中的天數, 數字(0……31)%m 月, 數字(01……12)%c 月, 數字(1……12)%b 縮寫的月份名字(Jan……Dec)%j 一年中的天數(001……366)%H 小時(00……23)%k 小時(0……23)%h 小時(01……12)%I 小時(01……12)%l 小時(1……12)%i 分鐘, 數字(00……59)%r 時間,12 小時(hh:mm:ss [AP]M)%T 時間,24 小時(hh:mm:ss)%S 秒(00……59)%s 秒(00……59)%p AM或PM%w 一個星期中的天數(0=Sunday ……6=Saturday )%U 星期(0……52), 這裡星期天是星期的第一天%u 星期(0……52), 這裡星期一是星期的第一天%% 一個文字「%」。

這裡是一個使用日期函數的例子。

下面的查詢選擇所有 date_col 值在最後30 天內的記錄。

mysql> SELECT something FROM tbl_nameWHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; DAYOFWEEK(date)返回 date 的星期索引(1 = Sunday, 2 = Monday, ... 7 = Saturday)。

索引值符合 ODBC 的標準。

mysql> SELECT DAYOFWEEK('1998-02-03');-> 3WEEKDAY(date)返回 date 的星期索引(0 = Monday, 1 = Tuesday, ... 6 = Sunday):mysql> SELECT WEEKDAY('1998-02-03 22:23:00');-> 1mysql> SELECT WEEKDAY('1997-11-05');-> 2DAYOFMONTH(date)返回 date 是一月中的第幾天,範圍為 1 到 31:mysql> SELECT DAYOFMONTH('1998-02-03');-> 3DAYOFYEAR(date)返回 date 是一年中的第幾天,範圍為 1 到 366:mysql> SELECT DAYOFYEAR('1998-02-03');-> 34MONTH(date)返回 date 中的月份,範圍為 1 到 12:mysql> SELECT MONTH('1998-02-03');-> 2DAYNAME(date)返回 date 的星期名:mysql> SELECT DAYNAME("1998-02-05");-> 'Thursday'MONTHNAME(date)返回 date 的月份名:mysql> SELECT MONTHNAME("1998-02-05");-> 'February'QUARTER(date)返回 date 在一年中的季度,範圍為 1 到 4:mysql> SELECT QUARTER('98-04-01');-> 2WEEK(date)WEEK(date,first)對於星期日是一周中的第一天的場合,如果函數只有一個參數調用,返回date 為一年的第幾周,返回值範圍為 0 到 53 (是的,可能有第 53 周的開始)。

兩個參數形式的 WEEK() 允許你指定一周是否以星期日或星期一開始,以及返回值為 0-53 還是 1-52。

這裡的一個表顯示第二個參數是如何工作的:值含義0 一周以星期日開始,返回值範圍為 0-531 一周以星期一開始,返回值範圍為 0-532 一周以星期日開始,返回值範圍為 1-533 一周以星期一開始,返回值範圍為 1-53 (ISO 8601)mysql> SELECT WEEK('1998-02-20');-> 7mysql> SELECT WEEK('1998-02-20',0);-> 7mysql> SELECT WEEK('1998-02-20',1);-> 8mysql> SELECT WEEK('1998-12-31',1);-> 53注意,在版本 4.0 中,WEEK(#,0) 被更改為匹配 USA 曆法。

注意,如果一周是上一年的最後一周,當你沒有使用 2 或 3 做為可選參數時,MySQL 將返回 0:mysql> SELECT YEAR('2000-01-01'), WEEK('2000-01-01',0);-> 2000, 0mysql> SELECT WEEK('2000-01-01',2);-> 52你可能會爭辯說,當給定的日期值實際上是 1999 年的第 52 周的一部分時,MySQL 對 WEEK() 函數應該返回 52。

我們決定返回 0 ,是因為我們希望該函數返回「在指定年份中是第幾周」。

當與其它的提取日期值中的月日值的函數結合使用時,這使得 WEEK() 函數的用法可靠。

如果你更希望能得到恰當的年-周值,那麼你應該使用參數 2 或 3 做為可選參數,或者使用函數YEARWEEK() :mysql> SELECT YEARWEEK('2000-01-01');-> 199952mysql> SELECT MID(YEARWEEK('2000-01-01'),5,2);-> 52YEAR(date)返回 date 的年份,範圍為 1000 到 9999:mysql> SELECT YEAR('98-02-03');-> 1998YEARWEEK(date)YEARWEEK(date,first)返回一個日期值是的哪一年的哪一周。

第二個參數的形式與作用完全與WEEK() 的第二個參數一致。

注意,對於給定的日期參數是一年的第一周或最後一周的,返回的年份值可能與日期參數給出的年份不一致:mysql> SELECT YEARWEEK('1987-01-01');-> 198653注意,對於可選參數 0 或 1,周值的返回值不同於 WEEK() 函數所返回值(0), WEEK() 根據給定的年語境返回周值。

相关文档
最新文档