sql语句中如何将datetime格式的日期转换为yy-mm-dd格式

SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm,整


理了一下SQL Server里面可能经常会用到的日期格式转换方法
SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm 
例如: 
select getdate() 


整理了一下SQL Server里面可能经常会用到的日期格式转换方法: 


举例如下: 


select CONVERT(varchar, getdate(), 120 ) 
2004-09-12 11:06:08 
select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','') 
20040912110608 
select CONVERT(varchar(12) , getdate(), 111 ) 
2004/09/12 
select CONVERT(varchar(12) , getdate(), 112 ) 
20040912 
select CONVERT(varchar(12) , getdate(), 102 ) 
2004.09.12 
select CONVERT(varchar(12) , getdate(), 101 ) 
09/12/2004 
select CONVERT(varchar(12) , getdate(), 103 ) 
12/09/2004 
select CONVERT(varchar(12) , getdate(), 104 ) 
12.09.2004 
select CONVERT(varchar(12)SQL Server中文版的默认的日期字段datetime格式是


yyyy-mm-dd Thh:mm:ss.mmm,整理了一下SQL Server里面可能经常会用到的日期格式


转换方法
SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm 
例如: 
select getdate() 




整理了一下SQL Server里面可能经常会用到的日期格式转换方法: 




举例如下: 




select CONVERT(varchar, getdate(), 120 ) 
2004-09-12 11:06:08 
select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','') 
20040912110608 
select CONVERT(varchar(12) , getdate(), 111 ) 
2004/09/12 
select CONVERT(varchar(12) , getdate(), 112 ) 
20040912 
select CONVERT(varchar(12) , getdate(), 102 ) 
2004.09.12 
select CONVERT(varchar(12) , getdate(), 101 ) 
09/12/2004 
select CONVERT(varchar(12) , getdate(), 103 ) 
12/09/2004 
select CONVERT(varchar(12) , getdate(), 104 ) 
12.09.2004 
select CONVERT(varchar(12) , getdate(), 105 ) 
12-09-2004 
select CONVERT(varchar(12) , getdate(), 106 ) 
12 09 2004 
select CONVERT(varchar(12) , getdate(), 107 ) 
09 12, 2004 
select CONVERT(varchar(12) , getdate(), 108 ) 
11:06:08 
select CONVERT(varchar(12) , getdate(), 109 ) 
09 12 2004 1 
select CONVERT(varchar(12) , getdate(), 110 ) 
09-12-2004 
select CONVERT(varchar(12) , getdate(), 113 ) 
12 09 2004 1 
select CONVERT(varchar(12) , getdate(), 114 ) 
11:06:08.177 
select getdate() 
结果:2003-12-28 16:52:00.107 
select convert(char(8),getdate(),112) 
结果:20031228 
select convert(char(8),getdate(),108) 
结果:16:52:00 
select convert(char(8),getdate(),112) 




指日期格式 
规则如下: 
1 101 美国 mm/dd/yyyy 
2 102 ANSI yy.mm.dd 
3 103 英国/法国 dd/mm/yy 
4 104 德国 dd.mm.yy 
5 105 意大利 dd-mm-yy 
6 106 - dd mon yy 
7 107 - mon dd, yy 
8 108 - hh:mm:ss 
- 9 或 109 (*) 默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM) 
10 110 美国 mm-dd-yy 
11 111 日本 yy/mm/dd 
12 112 ISO yymmdd 
- 13 或 113 (*) 欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h) 
14 114 - hh:mi:ss:mmm(24h) 
- 20 或 120 (*) ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff] 
- 21 或 121 (*) ODBC 规范(带毫秒) yyyy-mm-dd hh:mm:ss[.fff] 
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格) 
- 130* 科威特 dd mon yyyy hh:mi:ss:mmmAM 
- 131* 科威特 dd/mm/yy hh:mi:ss:mmmAM 
关于Emaker中字段的格式转换和字段间的运算代码可以加到属性里的“格式转换(读


出)”和“格式转换(写入)”,table字段设定里的“字段”位置也可以灵活加函


数。比如:'AF'+ID 或者ID+'/'+PWD ,convert(varchar(50),F1) , 
convert(int,%)-19110000 (读出) 
convert(char(8),convert(int,%)+19110000) (写入) 
实现行的合计运算等等。加入:%系统变量%,则是调用在Emaker 系统中设定的系统


变量。 , getdate(), 105 ) 
12-09-2004 
select CONVERT(varchar(12) , getdate(), 106 ) 
12 09 2004 
select CONVERT(varchar(12) , getdate(), 107 ) 
09 12, 2004 
select CONVERT(varchar(12) , getdate(), 108 ) 
11:06:08 
select CONVERT(varchar(12) , getdate(), 109 ) 
09 12 2004 1 
select CONVERT(varchar(12) , getdate(), 110 ) 
09-12-2004 
select CONVERT(varchar(12) , getdate(), 113 ) 
12 09 2004 1 
select CONVERT(varchar(12) , getdate(), 114 ) 
11:06:08.177 
select getdate() 
结果:2003-12-28 16:52:00.107 
select convert(char(8),getdate(),112) 
结果:20031228 
select convert(char(8),getdate(),108) 
结果:16:52:00 
select convert(char(8),getdate(),112) 


指日期格式 
规则如下: 
1 101 美国 mm/dd/yyyy 
2 102 ANSI yy.mm.dd 
3 103 英国/法国 dd/mm/yy 
4 104 德国 dd.mm.yy 
5 105 意大利 dd-mm-yy 
6 106 - dd mon yy 
7 107 - mon dd, yy 
8 108 - hh:mm:ss 
- 9 或 109 (*) 默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM) 
10 110 美国 mm-dd-yy 
11 111 日本 yy/mm/dd 
12 112 ISO yymmdd 
- 13 或 113 (*) 欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h) 
14 114 - hh:mi:ss:mmm(24h) 
- 20 或 120 (*) ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff] 
- 21 或 121 (*) ODBC 规范(带毫秒) yyyy-mm-dd hh:mm:ss[.fff] 
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格) 
- 130* 科威特 dd mon yyyy hh:mi:ss:mmmAM 
- 131* 科威特 dd/mm/yy hh:mi:ss:mmmAM 
关于Emaker中字段的格式转换和字段间的运算代码可以加到属性里的“格式转换(读


出)”和“格式转换(写入)”,table字段设定里的“字段”位置也可以灵活加函


数。比如:'AF'+ID 或者ID+'/'+PWD ,convert(varchar(50),F1) , 
convert(int,%)-19110000 (读出) 
convert(char(8),convert(int,%)+19110000) (写入) 

实现行的合计运算等等。加入:%系统变量%,则是调用在Emaker 系统中设定的系统变量。


MySQL的类型转换和SQL Server一样,就是类型参数有点点不同:CAST(xxx AS 类型) ,CONVERT(xxx,类型)。

MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值。两者具体的语法如下:

1 CAST(value as type);
2 CONVERT(value, type);

就是CAST(xxx AS 类型), CONVERT(xxx,类型)。

可以转换的类型是有限制的。这个类型可以是以下值其中的一个:

  • 二进制,同带binary前缀的效果 : BINARY    
  • 字符型,可带参数 : CHAR()     
  • 日期 : DATE     
  • 时间: TIME     
  • 日期时间型 : DATETIME     
  • 浮点数 : DECIMAL      
  • 整数 : SIGNED     
  • 无符号整数 : UNSIGNED 

下面举几个例子:

例一

1 mysql> SELECT CONVERT('23',SIGNED);
2 +----------------------+
3 CONVERT('23',SIGNED) |
4 +----------------------+
5 |                   23 |
6 +----------------------+
7 1 row in set

例二

1 mysql> SELECT CAST('125e342.83' AS signed);
2 +------------------------------+
3 CAST('125e342.83' AS signed) |
4 +------------------------------+
5 |                          125 |
6 +------------------------------+
7 1 row in set

例三

1 mysql> SELECT CAST('3.35' AS signed);
2 +------------------------+
3 CAST('3.35' AS signed) |
4 +------------------------+
5 |                      3 |
6 +------------------------+
7 1 row in set

像上面例子一样,将varchar 转为int 用 cast(a as signed),其中a为varchar类型的字符串。



你可能感兴趣的:(SQL)