精华内容
下载资源
问答
  • mysql之类型转换函数

    万次阅读 2019-04-08 14:32:02
    类型转换函数 类型转换函数和case函数 1.隐式类型转换和显式类型转换的概念 隐式类型装换: 两个值进行运算或者比较,首先要求数据类型必须一致。如果发现两个数据类型不一致时就会发生隐式类型转换。例如,把字符串...

    类型转换函数

    类型转换函数和case函数
    1.隐式类型转换和显式类型转换的概念
    隐式类型装换:
    两个值进行运算或者比较,首先要求数据类型必须一致。如果发现两个数据类型不一致时就会发生隐式类型转换。例如,把字符串转成数字,或者相反:
    SELECT 1+‘1’; – 字符串1转成数字
    SELECT concat(2,’ test’); – 数字2转成字符串
    显式类型转换:
    利用函数进行数据类型的转换
    2.Cast函数
    CAST(expr AS type)
    将任意类型的表达式expr转换成指定类型type的值。type可以是以下任意类型之一:
    BINARY[(N)] :二进制字符串,转换后长度小于N个字节( 不足长度N则尾部补上0x00 )
    CHAR[(N)] :字符串,转换后长度小于N个字符
    DATE :日期
    DATETIME :日期时间
    DECIMAL[(M[,N])] :浮点数,M为数字总位数(包括整数部分和小数部分),N为小数点后的位数
    SIGNED [INTEGER] :有符号整数
    TIME :时间
    UNSIGNED [INTEGER] :无符号整数
    字符串转成数字
    转成decimal时,从头扫描字符串直到第一个不为数字的字符为至。对截断的那一位进行四舍五入
    1)默认不限定M,N,转换为整数,按照小数点后第一位进行四舍五入:
    SELECT cast(‘28.82abc’ AS DECIMAL);
    在这里插入图片描述
    2)限定M不限定N,转换为整数(M尽量大一些):
    SELECT cast(‘28.82abc’ AS DECIMAL(4));
    在这里插入图片描述
    如果M的长度小于实际的数字位数时,会转换成设定位数的最大值。下面这个转换中M为1,即显示不了29这个两位数,就会显示1位数中最大的9
    SELECT cast(‘28.82abc’ AS DECIMAL(1));
    在这里插入图片描述
    M、N都限定,必须先满足小数点后的N位小数。下例中,先满足了1位小数,再取1位整数:
    SELECT cast(‘28.82abc’ AS DECIMAL(2,1));
    在这里插入图片描述
    先满足2位小数,不取整数部分:
    SELECT cast(‘28.82abc’ AS DECIMAL(2,2));
    在这里插入图片描述
    SELECT cast(‘28.82abc’ AS UNSIGNED);
    在这里插入图片描述
    SELECT cast(’-28abc’ AS SIGNED);
    在这里插入图片描述
    字符串到日期
    SELECT cast(‘2007-12-25’ AS DATETIME);
    在这里插入图片描述
    SELECT cast(‘2007-12-25’ AS DATE);
    在这里插入图片描述
    SELECT cast(‘20:20:20’ AS TIME);
    在这里插入图片描述
    日期格式必须是‘YYYY-MM-DD’
    SELECT cast(‘25-12-2007’ AS DATETIME);
    SELECT cast(‘2007-may-25’ AS DATETIME);
    在这里插入图片描述
    在这里插入图片描述

    数字到字符串
    SELECT cast(123 AS CHAR);
    SELECT cast(123 AS BINARY);
    日期到字符串
    SELECT cast(now() AS CHAR);
    在这里插入图片描述
    字符串到二进制字符串(binary string)
    二进制字符串:二进制字符串被视为一个连续的字节序列,与字符集无关。非二进制字符串(即我们通常所说的字符串)被视为一个连续排列的字符序列,与字符集有关。所谓与字符集无关,是指与MySQL自己的字符集无关,而是按照操作系统的字符集把字符串转换成字节进行存储
    两种字符串的比较方式:二进制字符串的比较方式是一个字节一个字节进行的,比较的依据是两个字节的二进制值。因为同一个字母的大小写的数值编码是不一样的,因此它是区分大小写的。另外,由于它和字符集无关,因此也就没有大写和小写字母一说
    非二进制字符串的比较方式是一个字符一个字符进行的,比较的依据是两个字符在字符集中的先后顺序。根据使用的校对不同,可以进行区分大小写的比较和不区分大小写的比较
    使用CAST(str AS BINARY)将字符串转换成二进制字符串时,通常使用它的快捷方式写法: BINARY str
    查看当前字符集和校对规则设置
    SHOW VARIABLES LIKE ‘collation_%’;
    在这里插入图片描述

    在比较表达式中,binary影响后面所有的字符串,并且不会忽略字符串的尾部空格
    SELECT ‘a’ = ‘A’ ,BINARY ‘a’ = ‘A’;
    SELECT ‘a’ = 'a ',BINARY ‘a’ = 'a ';
    在这里插入图片描述
    在这里插入图片描述
    Cast(col_name as date_type)
    将指定的列或者表达式转换为指定的数据类型
    使用场景:当两个值进行比较,但是数据源的表中列的数据不一致,这个时候可以使用cast函数进行转化
    3.Convert函数
    CONVERT(expr, type), CONVERT(expr USING sharset_name)
    convert函数的作用和cast函数几乎相同,但是它可以把字符串从一种字符集转换成另一种字符集。下例将字符串’abc’从默认的字符集转换成utf8字符集
    SELECT convert(‘abc’ USING utf8);
    在这里插入图片描述
    SELECT convert(‘你好’ USING gbk);
    在这里插入图片描述
    如果目标字符集不能表示该字符,则返回乱码
    SELECT convert(‘你好’ USING latin1);
    在这里插入图片描述

    日期字符串转换函数
    DATE_FORMAT(date, format)
    将日期date按照给定的模式format转换成字符串。format中可使用以下模式元素
    在这里插入图片描述
    在这里插入图片描述
    SELECT date_format(‘2009-10-04 22:23:00’, ‘%W %M %Y’);
    在这里插入图片描述
    SELECT date_format(now(), ‘%W %M %Y’);
    在这里插入图片描述
    SELECT date_format(‘2007-10-04 22:23:00’, ‘%H:%i:%s’);
    在这里插入图片描述
    TIME_FORMAT(date, format)
    format中只可使用时、分、秒和微秒模式元素
    SELECT time_format(‘22:23:01’, ‘%H.%i.%s’);
    在这里插入图片描述
    STR_TO_DATE(str, format)
    将字符串str以指定的模式format转换成日期。format中可以包含模式元素和字面量,字面量必须匹配str中的字面量:
    SELECT str_to_date(‘01,5,2013’,’%d,%m,%Y’);
    SELECT str_to_date(‘May 1, 2013’,’%M %d,%Y’);
    在这里插入图片描述
    以下在会话变量@@sql_mode设置中包含no_zero_date和no_zero_in_date时转换失败,没有包含这些设置时转换成功
    SELECT str_to_date(‘a09:30:17’,‘a%h:%i:%s’);
    SELECT str_to_date(‘09:30:17a’,’%h:%i:%s’);
    在这里插入图片描述在这里插入图片描述

    展开全文
  • 类型转换及类型转换函数

    千次阅读 2018-02-03 21:31:05
    所以类型转换,就是为了告诉编译器这部分内存,应该用什么方式去解释它,如何组织这段内存。 1、C风格类型转换 c语言比较熟悉,指针类型的转换很常见。通过圆括号和标识符组成(type) expression。允许任何类型...

    所以类型转换,就是为了告诉编译器这部分内存,应该用什么方式去解释它,如何组织这段内存。

    1、C风格类型转换

    c语言比较熟悉,指针类型的转换很常见。通过圆括号和标识符组成(type) expression。允许任何类型之间的转换过于粗鲁并且在程序语句中难以识别(主要是人工阅读代码可能难以分辨而已,因为C++语法复杂)。所以c++定义了四种类型转换,解决上述缺点。

    2、C++风格类型转换

    使用格式cast-name<type>(expression)
    1、 static_cast
      功能上基本和C风格类型转换一样,含义也相同,但是不能从表达式中去除const属性。

    voidf *p;
    double *dp = static_cast<double *>(p); 

    2、const_cast
      类型转换掉表达式的const属性,将常量对象转换成非常量对象的行为,此时编译器不会阻止用户对该对象写操作。

    const  char *p;
    char *q = const_cast<char *>(p);//正确
    char *pq = static_cast<char *>(p);//错误,只可通过const_cast转换

    3、dynamic_cast
      运行时类型识别,被用于安全地沿着类的继承关系向下进行类型转换。这就是说,你能用dynamic_cast把指向基类的指针或引用转换成指向其派生类或其兄弟类的指针或引用,而且你能知道转换是否成功。失败的转换将返回空指针(当对指针进行类型转换时)或者抛出异常(当对引用进行类型转换时)。它不能被用于缺乏虚函数的类型上,也不能用它来转换掉常量属性。

    class Widget{};//内部含有虚函数
    class SpecialWidget:public Widget{};
    Widget *pw = new SpecialWidget;
    SpecialWidget *psw = dynamic_cast<SpecialWidget *>(pw);//成立
    

    4、reinterpret_cast
      通常用于函数指针之间的转换,这种转换代码移植性很差,最好不使用。

    typedef void (*FUNPTR)();//函数指针类型
    int doSometing();
    FUNPTR funcptr = reinterpret_cast<FUNPTR>(doSometing);//这种转换可以通过编译器,但是我们为什么需要这种垃圾转换了,除非非常理解底层结构。

    2、类型转换函数

    当类型不匹配的时候,C++编译器通常会进行相应的类型转换。

    1. 内置类型隐式转换
      如c++支持char隐式转换成int,short隐式转换double等,这些都是语言特性造成,不受我们控制无法改变。
    2. 自定义类
      当类型不匹配时,编译器也会首先考虑隐式转换但是需要调用对应的转换函数。C++规定两种函数可以作为隐式的类型转换函数:单参数构造函数和隐式类型转换运算符。

    单参数构造函数:是指只用一个参数即可以调用的构造函数。该函数可以是只定义了一个参数,也可以是虽然定义了多个参数但第一个参数以后的所有参数都有缺省值。总之,编译器需要调用对应的函数。

    class Name {
    public:
        Name(const string& s); 
    };
    void Display(Name a);
    string s("Hello Name");
    Display(s);//这里会进行隐式转换,通过Name构造函数生成临时对象,传递进去。

    隐式类型转换运算符:也是一个函数。operator type()

    class Rational {
    public:
    operator double() const; //类型转换运算符,转换Rational类成double
    };
    Rational r(1,2);
    double d = 0.5*r;//编译器自动调用使r转换成double

    3、避免定义类型转换函数

    可能当你在不需要使用转换函数时,这些的函数却会被编译器调用运行。结果这些不正确的程序会出现问题而又无法判断出原因。

    1、首先解决类型转换运算符
      用不使用语法关键字的等同的函数来替代转换运算符,明确调用对应的函数,而避免编译器自动调用。库函数中的string类型没有包括隐式地从string转换成C风格的char*的功能,而是定义了一个成员函数c_str用来完成这个转换。
    2、解决通过单参数构造函数进行隐式类型转换
      C++编译器支持explicit关键字,禁止编译器自动调用相应的构造函数进行隐式转换。暂时理解这个方法即可,其他其淫无比的技巧放放吧。

    template<class T>//模板数组
    class Array {
    public:
        Array(int lowBound, int highBound);//不可做隐式转换函数
        Array(int size);//数组维度,可做隐式转换函数
        T& operator[](int index);
        bool operator==( const Array<int>& lhs,const Array<int>& rhs);
    };
    
    Array<int> a(10),b(10);
    
    if(a == b[i])
    {
    
    }
    /*
    因为隐式转换,出现大问题。b[i]是int类型,a是Array<int>类型。然后调用operator==函数。于是编译器通过构造函数将int转换成Array<int>临时对象,产生错误,致命bug。
    通过explicit关键字声明构造函数,那么这里编译器就会报错,而不会通过。
    */
    展开全文
  •  今天是第一次听到C++还有个转换构造函数,之前经常见到默认构造函数、拷贝构造函数、析构函数,但是从没听说过转换构造函数,隐式转换函数也是一样,C++的确是够博大精深的,再次叹服!  其实我们已经在C/C++中...

     

      今天是第一次听到C++还有个转换构造函数,之前经常见到默认构造函数、拷贝构造函数、析构函数,但是从没听说过转换构造函数,隐式转换函数也是一样,C++的确是够博大精深的,再次叹服!


      其实我们已经在C/C++中见到过多次标准类型数据间的转换方式了,这种形式用于在程序中将一种指定的数据转换成另一指定的类型,也即是强制转换,比如:int a = int(1.23),其作用是将1.23转换为整形1。然而对于用户自定义的类类型,编译系统并不知道如何进行转换,所以需要定义专门的函数来告诉编译系统改如何转换,这就是转换构造函数和类型转换函数,它们都可以实现类型的转换。

     

     

    一、转换构造函数


      转换构造函数(conversion constructor function) 的作用是将一个其他类型的数据转换成一个类的对象。


    当一个构造函数只有一个参数,而且该参数又不是本类的const引用时,这种构造函数称为转换构造函数。


    转换构造函数是对构造函数的重载。


     

    例如:

    Complex(double r)   
    
    {  
    
        real=r;  
    
        imag=0;  
    
    }  

     

    其作用是将double型的参数r转换成Complex类的对象,将r作为复数的实部,虚部为0。用户可以根据需要定义转换构造函数,在函数体中告诉编译系统怎样去进行转换。


    那么如何使用转换构造函数进行类型转换呢?我们看如下的例子:

    // TypeSwitch.cpp : 定义控制台应用程序的入口点。  
    
    //  
    
      
    
    
    
    #include <iostream>  
    
      
    
    using namespace std;  
    
      
    
    class Complex  
    
    {  
    
    public:  
    
        Complex():real(0),imag(0){};  
    
        Complex(double r, double i):real(r),imag(i){};  
    
        Complex(double r):real(r),imag(0){};  // 定义转换构造函数  
    
      
    
        void Print(){  
    
            cout<<"real = " << real <<" image = "<<imag<<endl;  
    
        }  
    
        Complex operator+(Complex c){  
    
            return Complex(this->real + c.real, this->imag + c.imag);       
    
        }  
    
    private:  
    
        double real;  
    
        double imag;  
    
    };  
    
      
    
    int main(int argc, char* argv[])  
    
    {  
    
        Complex c;  
    
        c = 1.2;  // 调用转换构造函数将1.2转换为Complex类型  
    
        c.Print();  
    
        Complex c1(2.9, 4.2);  
    
        Complex c2 = c1 + 3.1; // 调用转换构造函数将3.1转换为Complex类型  
    
        c2.Print();  
    
        return 0;  
    
    }  

     

    不仅可以将一个标准类型数据转换成类对象,也可以将另一个类的对象转换成转换构造函数所在的类对象。如可以将一个学生类对象转换为教师类对象,可以在Teacher类中写出下面的转换构造函数:

     

    Teacher(Student& s)  
    
    {  
    
        num=s.num;  
    
        strcpy(name,s.name);  
    
        sex=s.sex;  
    
    }  

    使用方法同上!


    注意:

    1.用转换构造函数可以将一个指定类型的数据转换为类的对象。但是不能反过来将一个类的对象转换为一个其他类型的数据(例如将一个Complex类对象转换成double类型数据)。

    2.如果不想让转换构造函数生效,也就是拒绝其它类型通过转换构造函数转换为本类型,可以在转换构造函数前面加上explicit!例如:

    // TypeSwitch.cpp : 定义控制台应用程序的入口点。  
    
    //  
    
      
    
    #include "stdafx.h"  
    
    #include <iostream>  
    
      
    
    using namespace std;  
    
      
    
    class Complex  
    
    {  
    
    public:  
    
        Complex():real(0),imag(0){};  
    
        Complex(double r, double i):real(r),imag(i){};  
    
        explicit Complex(double r):real(r),imag(0){};  // explicit禁止构造函数的转换功能  
    
      
    
        void Print(){  
    
            cout<<"real = " << real <<" image = "<<imag<<endl;  
    
        }  
    
    private:  
    
        double real;  
    
        double imag;  
    
    };  
    
      
    
    int main(int argc, _TCHAR* argv[])  
    
    {  
    
        Complex c1(1.2, 2.3), c2;  
    
        double d;  
    
        d = c1 + 1.1; // 调用类型转换函数将c1转换为double,编译出错!  
    
        cout<<d<<endl;  
    
          
    
        return 0;  
    
    }  

     

     

     

    二、类型转换函数


    用转换构造函数可以将一个指定类型的数据转换为类的对象。但是不能反过来将一个类的对象转换为一个其他类型的数据(例如将一个Complex类对象转换成double类型数据)。而类型转换函数就是专门用来解决这个问题的!


    类型转换函数的作用是将一个类的对象转换成另一类型的数据。

     

            如果已声明了一个Complex类,可以在Complex类中这样定义类型转换函数:

    operator double( )  
    
    {  
    
         return real;  
    
    }  

     

    类型转换函数的一般形式为:


            operator 类型名( )


            {
                   实现转换的语句
            }


    注意事项:

    1.在函数名前面不能指定函数类型,函数没有参数。 

    2.其返回值的类型是由函数名中指定的类型名来确定的。

    3.类型转换函数只能作为成员函数,因为转换的主体是本类的对象,不能作为友元函数或普通函数。

    4.从函数形式可以看到,它与运算符重载函数相似,都是用关键字operator开头,只是被重载的是类型名。double类型经过重载后,除了原有的含义外,还获得新的含义(将一个Complex类对象转换为double类型数据,并指定了转换方法)。这样,编译系统不仅能识别原有的double型数据,而且还会把Complex类对象作为double型数据处理。

     

     

    // TypeSwitch.cpp : 定义控制台应用程序的入口点。  
    
    //  
    
      
    
    #include "stdafx.h"  
    
    #include <iostream>  
    
      
    
    using namespace std;  
    
      
    
    class Complex  
    
    {  
    
    public:  
    
        Complex():real(0),imag(0){};  
    
        Complex(double r, double i):real(r),imag(i){};  
    
        Complex(double r):real(r),imag(0){};  // 定义转换构造函数  
    
      
    
        void Print(){  
    
            cout<<"real = " << real <<" image = "<<imag<<endl;  
    
        }  
    
        operator double(){ // 定义类型转换函数  
    
            return real;  
    
        }  
    
    private:  
    
        double real;  
    
        double imag;  
    
    };  
    
      
    
    int main(int argc, _TCHAR* argv[])  
    
    {  
    
        Complex c1(1.2, 2.3);  
    
        double d;  
    
        d = c1 + 1.1; // 调用类型转换函数将c1转换为double  
    
        cout<<d<<endl;  
    
          
    
        return 0;  
    
    } 

     

    本例中,对于d = c1 + 1.1;先调用类型转换函数将c1转为double类型,然后在与1.1相加!

     

        那么程序中的Complex类对具有双重身份,既是Complex类对象,又可作为double类型数据。Complex类对象只有在需要时才进行转换,要根据表达式的上下文来决定。转换构造函数和类型转换运算符有一个共同的功能: 当需要的时候,编译系统会自动调用这些函数,建立一个无名的临时对象(或临时变量)。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    本文转自:

    https://www.2cto.com/kf/201311/258753.html

     

     

     

     

     

    展开全文
  • sql日期格式转换函数_SQL转换日期

    万次阅读 2020-07-27 05:36:01
    sql日期格式转换函数 介绍 (Introduction) A common task for newbies is to learn how to do a SQL convert date and work to convert them date to other data types or covert other data types to Date. ...

    sql日期格式转换函数

    介绍 (Introduction)

    A common task for newbies is to learn how to do a SQL convert date and work to convert them date to other data types or covert other data types to Date.

    对于新手来说,一项常见的任务是学习如何执行SQL转换日期并将其转换为其他数据类型或将其他数据类型转换为Date。

    Here in this article we will explain how to work and convert dates to different formats or vice versa.

    在本文的此处,我们将解释如何将日期转换为不同的格式,反之亦然。

    要求 (Requirements)

    1. SQL Server installed. Starting in SQL Server 2008

      已安装SQL Server。 从SQL Server 2008开始

    (Example)

    The first example will be simple, we have a varchar column with a date in a table, but we need to convert the varchar to date. We need to do a SQL convert date.

    第一个示例很简单,我们在表中有一个带有日期的varchar列,但是我们需要将varchar转换为date。 我们需要做一个SQL转换日期。

    Here it is script to create the table with data:

    这是使用数据创建表的脚本:

    CREATE TABLE [dbo].[delivers](
      [productid] [tinyint] NOT NULL,
      [date] [nvarchar](100) NULL,
     CONSTRAINT [PK_delivers] PRIMARY KEY CLUSTERED 
    (
      [productid] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    GO
    INSERT [dbo].[delivers] ([productid], [date]) VALUES (1, N'02-03-2005')
    INSERT [dbo].[delivers] ([productid], [date]) VALUES (2, N'03-05-2006')
    INSERT [dbo].[delivers] ([productid], [date]) VALUES (3, N'04-05-2011')
    

    We want to convert the column date from nvarchar(100) to a date.

    我们想要将列日期从nvarchar(100)转换为日期。

    To do it, we are going to try to modify the design of the table:

    为此,我们将尝试修改表的设计:

    SSMS Design table

    We will try to change the Data Type to smalldatetime:

    我们将尝试将数据类型更改为smalldatetime:

    change varchar to smalldatime in SSMS

    You will receive the following error message:

    您将收到以下错误信息:

    Saving changes is not permitted. The changes that you have made require the following tables to be dropped and re-created. You have either made changes to a table that can’t be re-created or enabled the option Prevent saving changes that require the table to be re-created.

    不允许保存更改。 您所做的更改要求删除并重新创建下表。 您已经对无法重新创建的表进行了更改,或者启用了“防止保存需要重新创建表的更改”选项。

    To solve this error, in SSMS go to Tools > Options menu:

    要解决此错误,请在SSMS中转到“ 工具” >“ 选项”菜单:

    Change Options in SSMS

    In Options, go to Designers >Table and Database Designers and uncheck the Prevent saving changes that require table re-creation:

    在选项中,转到设计器>表和数据库设计器,然后取消选中阻止保存需要重新创建表的更改:

    Uncheck Prevent saving changes that require table re-creation

    This option will disable to option to prevent saving table recreation. When you modify the column data type, it requires table re-creation.

    此选项将禁用为选项,以防止保存表重新创建。 修改列数据类型时,需要重新创建表。

    Now, you can save the design and your table will be converted to date and the SQL convert date is completed:

    现在,您可以保存设计,您的表将转换为日期,并且SQL转换日期已完成:

    SQL convert date: Date time results after convert sql date

    转换功能 (Conversion functions)

    T-SQL contains functions to convert data types. We will use CAST and CONVERT to do a SQL convert date.

    T-SQL包含转换数据类型的函数。 我们将使用CAST和CONVERT进行SQL转换日期。

    Let’s start with CAST first:

    让我们先从CAST开始:

    如何使用CAST将varchar,nvarchar,char,nchar转换为sql date (How to convert from varchar, nvarchar, char, nchar to sql date using CAST)

    The following example, will show how to convert characters to a datetime date type using the CAST function:

    下面的示例将说明如何使用CAST函数将字符转换为日期时间日期类型:

    declare @vardate varchar(100)='03-04-2016'
    select CAST(@vardate AS datetime) AS dataconverted;
    

    The example declares a variable named vardate and then this variable that is a varchar is converted to datetime using the CAST function.

    该示例声明一个名为vardate的变量,然后使用CAST函数将该变量varchar转换为datetime。

    Note: For more information about the CAST function, refer to this link: CAST and CONVERT (Transact-SQL)

    注意: 有关CAST函数的更多信息,请参考以下链接: CAST和CONVERT(Transact-SQL)

    SQL如何使用CONVERT将日期从varchar,nvarchar,char,nchar转换为日期 (How to do a SQL convert date from varchar, nvarchar, char, nchar to date using CONVERT)

    CONVERT is a function that can do the same than CAST in the previous scenario.

    CONVERT是一项功能,可以与以前的方案中的CAST相同。

    declare @vardate varchar(100)='03-04-2016'
    select CONVERT(datetime, @vardate) as dataconverted
    

    The T-SQL code is doing the same than cast, but it is using the CONVERT function. The advantage of CONVERT is that you can easily change the format of the date using the style argument.

    T-SQL代码的作用与强制转换相同,但是它使用的是CONVERT函数。 CONVERT的优点是您可以使用style参数轻松更改日期格式。

    For example, if you want the date in the ISO format, you can use the following T-SQL sentence:

    例如,如果您想要ISO格式的日期,则可以使用以下T-SQL语句:

    select CONVERT(nvarchar(30),getdate(), 121) as isoformat
    

    如何在T-SQL中将SQL日期转换为不同的格式 (How to convert sql date into different formats in T-SQL)

    The following example shows how to convert the date format in different formats.

    下面的示例演示如何将日期格式转换为其他格式。

    For Japananes format:

    对于Japananes格式:

    select CONVERT(nvarchar(30),getdate(), 111) as Japanformat
    

    For USA format:

    对于美国格式:

    select CONVERT(nvarchar(30),getdate(), 110) as USAformat
    

    For ANSI format:

    对于ANSI格式:

    select CONVERT(nvarchar(30),getdate(), 102) as ANSIformat
    

    For British format:

    对于英式格式:

    select CONVERT(nvarchar(30),getdate(), 103) as Britishformat
    

    For German format:

    对于德语格式:

    select CONVERT(nvarchar(30),getdate(), 104) as Germanformat
    

    For Italian format:

    对于意大利语格式:

    select CONVERT(nvarchar(30),getdate(), 105) as Italianformat
    

    For European default format:

    对于欧洲默认格式:

    select CONVERT(nvarchar(30),getdate(), 113) as EuropeDefaultformat
    

    For ODBC Canonical:

    对于ODBC Canonical:

    select CONVERT(nvarchar(30),getdate(), 120) as ODBCCanonicalformat
    

    You always have the option to use the FORMAT function to get the date in the format that you want:

    您始终可以选择使用FORMAT函数以所需的格式获取日期:

    SELECT FORMAT( getdate(), 'dd/MM/yy')
    

    FORMAT is easier to handle dates and use the format of your preference, because you do not need to know the style. However, in my experience I see a lot of code using the CAST and CONVERT functions so, it is better to know them.

    FORMAT更容易处理日期并使用您的首选项格式,因为您不需要知道样式。 但是,以我的经验,我看到很多使用CAST和CONVERT函数的代码,因此最好了解它们。

    Note: For more information about the FORMAT function, refer to this link: FORMAT (Transact-SQL)

    注意: 有关FORMAT函数的更多信息,请参考以下链接: FORMAT(Transact-SQL)

    与SQL转换日期操作有关的问题 (Problems related to SQL convert date operations)

    When you try to convert to date it is not always possible. The following example shows a common error:

    当您尝试转换为日期时,并非总是可能。 以下示例显示一个常见错误:

    declare @vardate varchar(100)='11242016'
    select CONVERT(datetime, @vardate) as dataconverted
    

    The error message is the following:

    错误消息如下:

    Msg 242, Level 16, State 3, Line 22

    消息242,第16级,州3,第22行

    The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

    从varchar数据类型到datetime数据类型的转换导致值超出范围。

    You need separators for the date like a “/”, a “.” or a “-“.

    您需要用于日期的分隔符,例如“ /”,“。” 或“-”。

    The following example, modifies the string from 11242016 to 11-24-2016 and then converts to sql date:

    以下示例将字符串从11242016修改为11-24-2016,然后转换为sql date:

    declare @vardate varchar(100)='11242016'
     
    set @vardate= SUBSTRING(@vardate, 1, 2)+'-'+ SUBSTRING(@vardate, 3, 2)+'-'+SUBSTRING(@vardate, 5, 4)
     
    select CONVERT(date, @vardate) as dataconverted
    

    We use substring to concatenate the “-” to use an acceptable date format and then we use the CONVERT function to convert the characters to sql date.

    我们使用子字符串来连接“-”以使用可接受的日期格式,然后使用CONVERT函数将字符转换为sql date。

    日期数据类型 (Date data types)

    In SQL Server, there are several types of date datatypes:

    在SQL Server中,有几种类型的日期数据类型:

    • Time returns the hours, minutes, seconds and nanoseconds (hh:mm:ss.nnnnnn)

      时间返回小时,分钟,秒和纳秒(hh:mm:ss.nnnnnn)
    • Date returns the year, months and days (yyyy-mm-dd)

      日期返回年,月和日(yyyy-mm-dd)
    • Datetime returns data with this format: YYYY-MM-DD hh:mm:ss[.nnn]

      日期时间以以下格式返回数据:YYYY-MM-DD hh:mm:ss [.nnn]
    • Smalldatetime returns date with this format: YYYY-MM-DD hh:mm:ss

      Smalldatetime以以下格式返回日期:YYYY-MM-DD hh:mm:ss
    • Datetime2 is similar to Datetime, but it has more precision (YYYY-MM-DD hh:mm:ss[.nnnnnnn])

      Datetime2与Datetime类似,但具有更高的精度(YYYY-MM-DD hh:mm:ss [.nnnnnnn])
    • Datetimeoffset it has the precision of datetime2, but it is used for time zones in UTC

      Datetimeoffset它具有datetime2的精度,但它用于UTC中的时区

    SQL将日期转换为整数 (SQL convert date to integer)

    If you use the CONVERT or CAST to convert a datetime to integer, it will return the number of days since 1900 until the date provided.

    如果使用CONVERT或CAST将日期时间转换为整数,它将返回自1900年到提供的日期为止的天数。

    For example, the following T-SQL code will show the number of days from 1900 until today:

    例如,以下T-SQL代码将显示从1900到今天的天数:

    SELECT CONVERT(INT, GETDATE())
    

    You can also convert to integer the year, months, days, etc. of a datetime value. The following code shows how to store in integer variables the day, month and year of a datetime value:

    您还可以将日期时间值的年,月,日等转换为整数。 以下代码显示如何在整数变量中存储日期时间值的日,月和年:

    declare @year int = year(getdate())
     
    declare @month int = month(getdate())
    declare @day int = day(getdate())
    select @year as year,@month as month,@day as day
    

    有关SQL Server中SQL转换日期的常见问题 (Common Questions about SQL convert date in SQL Server)

    Note: The following link contains FAQ about functions and dates in SQL Server: FAQ about Dates in SQL Server

    注意: 以下链接包含有关SQL Server中的功能和日期的 常见问题解答 有关SQL Server中的日期的常见问题解答

    结论 (Conclusions)

    In this article, we learned how to do a SQL convert date in SQL Server. We learned how to modify the data type in a table, how to use the CAST, CONVERT and FORMAT functions. We also learned about the different types of SQL data types.

    在本文中,我们学习了如何在SQL Server中执行SQL转换日期。 我们学习了如何修改表中的数据类型,如何使用CAST,CONVERT和FORMAT函数。 我们还了解了不同类型SQL数据类型。

    翻译自: https://www.sqlshack.com/sql-convert-date/

    sql日期格式转换函数

    展开全文
  • [C++] C++转换函数的使用

    千次阅读 2018-03-11 16:07:14
    1.构造函数转换和explicit关键字 在学习构造函数转换之前,先来复习下什么是自动类型转换:将一个标准类型的变量赋值给另一个标准类型的变量时,如果这两种类型兼容,则C++自动会将这个值转换为接收变量的值。...
  • C++转换函数 (conversion function)

    千次阅读 2019-01-12 11:32:07
    本文将介绍C++中的转换函数(conversion function)。 1.代码  设计一个类Fraction表示分数,包含分子和分母。我们希望它能自动转换为double类型,并参与运算。  Fraction类的代码如下,下文会对该代码做详细的...
  • Oracle日期函数和转换函数

    万次阅读 多人点赞 2019-04-25 20:54:03
    一、日期函数 日期函数用于处理date类型的数据,两个日期相减返回日期之间相差的天数。日期不允许做加法运算,无意义。 常见代表符号:yyyy 年,mm 月,dd 日,hh 小时,mi 分钟,ss 秒,day 星期 默认情况下日期...
  • Oracle转换函数

    千次阅读 2018-05-26 21:50:32
    -----------------------------------------------Oracle转换函数------------------------------------------------------------1. TO_CHAR:字符串转换函数 范例:查询所有的雇员将将年月日分开,此时可以使用TO_...
  • HIVE 的时间转换函数

    千次阅读 2019-06-22 22:19:01
    HIVE 的时间转换函数。 1,在大多数的sql中获取当前时间都是用now()函数即可,hive获取当前时间的函数与sql 不一样 hive有一个获得当前时区的UNIX时间戳:unix_timestamp 语法: unix_timestamp() 返回值: bigint ...
  • c++类的类型转换函数

    千次阅读 2017-08-12 12:45:15
    之前学习的,可以将普通类型转换为类类型,需要借助转换构造函数。那么反过来,类类型可以转换为普通类型吗?#include <stdio.h>class TestCls{ public: int a; TestCls(int x = 0) : a(x) {} };int main(void) { ...
  • 转换函数使用 输入一个整数和进制,转换成十进制输出 输入格式: 在一行输入整数和进制 输出格式: 在一行十进制输出结果 输入样例: 45,8 输出样例: 37 思路: 使用转换函数。 代码如下: a,b=input().split(",",1) ...
  • 类型转换函数与转换构造函数

    千次阅读 2018-01-27 21:19:08
    1. 隐式类型转换规则 编译器的默认隐式类型转换规则: 先看个例子: short s = 'a'; unsigned int ui = 1000; int i = -2000; double d = i; //自己先想一下输出结果,会是什么 cout "d = " ; cout "ui + i = ...
  • MySQL常用类型转换函数总结

    万次阅读 2019-03-25 11:50:27
    MySQL函数,常用类型转换函数总结 1、Concat函数。 连接字符串常用:concat函数。如sql查询条件的like查询,AND c.name like concat(#{param.name},'%') 将Int 转为varchar经常用 concat函数,比如concat(8,'0') ...
  • 这一块知识点在学习C++时没有深入了解,在查看opencv基本数据结构...转换构造函数:预定义类型转换成类类型 一般形式 class C { public: double real; double imag; C() {} C(double i, double r) { real = ...
  • Clickhouse 转换函数

    千次阅读 2020-08-31 17:16:32
    Clickhouse的提供基本的数据类型: 整型 浮点型 日期时间 ...对应的转换函数: 判断函数的类型: 参考: https://clickhouse.tech/docs/en/sql-reference/functions/type-conversion-functions/
  • c语言实现进制转换函数

    千次阅读 2020-04-16 11:26:23
    编写一个函数,输入一个的整型数字,可以选择按照8/10/16进制输出字符串。采用递归形式实现 #include<stdio.h> void number_print(int i_num, int type) // type为8、10、16 { int divisor; // 除数 int...
  • VBA 字符串函数&转换函数

    千次阅读 2018-12-05 16:58:09
    1,vba字符串函数列表: Trim(string) 去掉string左右两端空白 Ltrim(string) 去掉string左端空白 Rtrim(string) 去掉string右端空白 Len(string) 计算string长度 Left(string, x) 取string左段x个字符组成...
  • SQL转换函数(CAST 和 CONVERT)

    千次阅读 2018-11-09 14:16:11
    SQL转换函数(CAST 和 CONVERT)
  • Oracle函数——转换函数

    万次阅读 2018-05-21 18:56:02
    1、to_char()函数:将DATE或者NUMBER转换为字符串2、to_date()函数:将number、char转换为date3、to_number()函数:将char转换为number4、CAST(expr AS type_name)函数:用于将一个内置数据类型或集合类型转变为另一...
  • hive的类型转换函数

    千次阅读 2019-07-13 16:53:39
    hive有两个类型转换函数。 1,cast()函数。 公式: cast(表达式 as 数据类型) 2,convert()函数。 公式: convert(数据类型,表达式) 相关链接: https://www.cnblogs.com/shujuxiong/p/9162162.html ...
  • C++进制转换函数

    千次阅读 2019-02-18 22:09:02
    其他进制转换10进制——》strtol函数 头文件cstdlib C 库函数 long int strtol(const char *str, char **endptr, int base) 把参数 str 所指向的字符串根据给定的 base 转换为一个长整数(类型为 long int ...
  • python内置的进制转换函数

    千次阅读 2018-12-18 20:39:15
    python内置函数: hex() 十进制浮点数转换------正确用法–&gt;1.2.hex() #把浮点型转换成16进制 In [50]: 1.2.hex() Out[50]: '0x1.3333333333333p+0' In [51]: hex(1.2) -----------------------------...
  • Mysql时间转换函数

    万次阅读 2019-03-28 10:21:02
    平时比较常用的时间、字符串、时间戳之间的互相转换,虽然常用但是几乎每次使用时候都喜欢去搜索一下用法;本文将作为一个笔记,整理一下三者之间的 转换(即:date转字符串、date转时间戳、字符串转date、字符串转...
  • MySQL 日期格式时间戳转换函数

    千次阅读 2019-03-26 16:04:44
    方便查看函数功能,特摘录在此。 平时比较常用的时间、字符串、时间戳之间的互相转换,虽然常用但是几乎每次使用时候都喜欢去搜索一下用法;本文将作为一个笔记,整理一下三者之间的 转换(即:date转字符串、date...
  • 1.C++中类型转换函数:将当前类的类型转换为其他类型 转换构造函数能够将其它类型转换为当前类类型(例如将double类型转换为complex类型),但是不能反过来将当前类类型转换为其它类型(例如将complex类型转换为...
  • 【c/c++】类型转换函数(类型转换运算符重载函数)

    千次阅读 多人点赞 2016-01-04 18:09:10
    用转换构造函数可以将一个指定类型的数据转换为类的对象。但是不能反过来将一个类的对象转换为一个其他类型的数据(例如将一个Complex类对象转换成...如果已声明了一个Complex类,可以在Complex类中这样定义类型转换函数
  • Excel大小写转换函数

    千次阅读 2019-02-24 14:16:33
    Excel大小写转换函数
  • C++中的各种进制转换函数汇总

    万次阅读 多人点赞 2018-06-10 22:09:10
    函数(可以将一个10进制数转换为指定格式的n进制字符串) 函数原型: int sprintf( char *buffer, const char *format, [ argument] … ); #include<cstdio> int main() { char s[100]={0}; sprintf(s,...
  • python进制转换函数

    千次阅读 2019-07-25 21:10:45
    文章目录bin()oct()hex()其他进制转换成十进制 bin() #十进制转换二进制 i = 16 j = bin(i) print(j) 0b10000 0b:表示它是一个二进制数字,10000:十进制数16转换成二进制的值 oct() #十进制转换八进制 i = 16 j =...
  • 类型转换函数 二进制转换:binary 语法: binary(string|binary) 返回值: binary 说明: 将 string 类型转换为二进制 hive > select binary ( 'charels' ) from iteblog ; OK charels 基础类型...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,926,748
精华内容 770,699
关键字:

转换函数