SQL日期格式转换
- 格式:doc
- 大小:27.00 KB
- 文档页数:5
Sqlserver中经常要操作一些时间类型的字段转换,我又不太记得住,所以搜集了以下的一些SqlserverConvert DateTime相关的资料发表在自己的小站里,方便自己以后要用的时候寻找,望对大家也有帮助.将sqlserver中table表的[datetime]字段值‘2007-11-07 16:41:35.033’ 改为‘2007-11-07 00:00:00‘去除了时分秒.[datetime]字段要为datetime类型的哦.UPDATE table SET [datetime]= Convert(char(11),[datetime],120)获取当前日期利用convert来转换成我们需要的datetime格式.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------------------------------------------------------------declare @dateTime DateTime--定义一个datetime的变量set @dateTime=getdate();--获取系统当前时间,并赋值给@dateTime字段--短日期格式:yyyy-m-dSELECT REPLACE(CONVERT(varchar(10),@dateTime,120),N'-0','-')--长日期格式:yyyy年mm月dd日SELECT STUFF(STUFF(CONVERT(char(8),@dateTime,112),5,0,N'年'),8,0,N'月')+N'日'--长日期格式:yyyy年m月d日SELECT DATENAME(Year,@dateTime)+N'年'+CAST(DATEPART(Month,@dateTime) AS varchar)+N'月'+DATENAME(Day,@dateTime)+N'日'--完整日期+时间格式:yyyy-mm-dd hh:mi:ss:mmmSELECT CONVERT(char(11),@dateTime,120)+CONVERT(char(12),@dateTime,114)------------------------------------------------------------------------------------------------2、日期推算处理DECLARE @dt datetimeSET @dt=GETDATE()DECLARE @number intSET @number=3--1.指定日期该年的第一天或最后一天--A. 年的第一天SELECT CONVERT(char(5),@dt,120)+'1-1'--B. 年的最后一天SELECT CONVERT(char(5),@dt,120)+'12-31'--2.指定日期所在季度的第一天或最后一天--A. 季度的第一天SELECT CONVERT(datetime,CONVERT(char(8),DATEADD(Month,DATEPART(Quarter,@dt)*3-Month(@dt)-2,@dt),120)+'1')--B. 季度的最后一天(CASE判断法)SELECT CONVERT(datetime,CONVERT(char(8),DATEADD(Month,DATEPART(Quarter,@dt)*3-Month(@dt),@dt),120)+CASE WHEN DATEPART(Quarter,@dt) in(1,4)THEN '31'ELSE '30' END)--C. 季度的最后一天(直接推算法)SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1+DATEPART(Quarter,@dt)*3-Month(@dt),@dt),120)+'1')--3.指定日期所在月份的第一天或最后一天--A. 月的第一天SELECT CONVERT(datetime,CONVERT(char(8),@dt,120)+'1')--B. 月的最后一天SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+'1') --C. 月的最后一天(容易使用的错误方法)SELECT DATEADD(Month,1,DATEADD(Day,-DAY(@dt),@dt))--4.指定日期所在周的任意一天SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)--5.指定日期所在周的任意星期几--A. 星期天做为一周的第1天SELECTDATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt) --B. 星期一做为一周的第1天SELECTDATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@d t)转自:/fengfage/blog/item/1429fda1b9ec3d9b46106453.html。
SQLServer⽇期与字符串之间的转换本⽂导读:在SQL Server数据库中,SQL Server⽇期时间格式转换字符串可以改变SQL Server⽇期和时间的格式,是每个SQL数据库⽤户都应该掌握的。
下⾯主要就介绍⼀下SQL Server⽇期时间转字符串的相关知识⼀、⽇期转换为字符串、⽇期格式1、使⽤函数CONVERT:CONVERT ( data_type [ ( length ) ] , expression [ , style ] )2、参数expression :是任何有效的 sql 表达式。
data_type:⽬标系统所提供的数据类型,包括 bigint 和 sql_variant。
不能使⽤⽤户定义的数据类型。
length:nchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。
style:⽇期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。
3、通常⽤到的字符串转⽇期格式Select CONVERT(varchar(100), GETDATE(), 0): 0516200610:57AMSelect CONVERT(varchar(100), GETDATE(), 1): 05/16/06Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06Select CONVERT(varchar(100), GETDATE(), 6): 160506Select CONVERT(varchar(100), GETDATE(), 7): 0516, 06Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46Select CONVERT(varchar(100), GETDATE(), 9): 0516200610:57:46:827AMSelect CONVERT(varchar(100), GETDATE(), 10): 05-16-06Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16Select CONVERT(varchar(100), GETDATE(), 12): 060516Select CONVERT(varchar(100), GETDATE(), 13): 1605200610:57:46:937Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-1610:57:47Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-1610:57:47.157Select CONVERT(varchar(100), GETDATE(), 22): 05/16/0610:57:47 AMSelect CONVERT(varchar(100), GETDATE(), 23): 2006-05-16Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-1610:57:47.250Select CONVERT(varchar(100), GETDATE(), 100): 0516200610:57AMSelect CONVERT(varchar(100), GETDATE(), 101): 05/16/2006Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006Select CONVERT(varchar(100), GETDATE(), 106): 16052006Select CONVERT(varchar(100), GETDATE(), 107): 0516, 2006Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49Select CONVERT(varchar(100), GETDATE(), 109): 0516200610:57:49:437AMSelect CONVERT(varchar(100), GETDATE(), 110): 05-16-2006Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16Select CONVERT(varchar(100), GETDATE(), 112): 20060516Select CONVERT(varchar(100), GETDATE(), 113): 1605200610:57:49:513Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-1610:57:49Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-1610:57:49.700Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 142710:57:49:907AM Select CONVERT(varchar(100), GETDATE(), 131): 18/04/142710:57:49:920AM⼆、字符串转换为⽇期1、使⽤ CAST:CAST ( expression AS data_type )2、使⽤ CONVERT:CONVERT (data_type[(length)], expression [, style])3、例如Select cast('2009-01-01'as datetime)三、Sql Server⽇期与时间函数1、当前系统⽇期、时间:select getdate()2、dateadd 在向指定⽇期加上⼀段时间的基础上,返回新的 datetime 值例如:向⽇期加上2天select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.0003、datediff 返回跨两个指定⽇期的⽇期和时间边界数。
引文:一般存入数据库中的时间格式为yyyy-mm-dd hh:mm:ss如果要转换为yyyy-mm-dd 短日期格式.可以使用convert函数.下面是sqlserver帮助中关于convert函数的声明:使用CONVERT:CONVERT (data_type[(length)], expression[, style])参数expression是任何有效的Microsoft® SQL Server™ 表达式。
data_type目标系统所提供的数据类型,包括bigint和sql_variant。
不能使用用户定义的数据类型。
lengthnchar、nvarchar、char、varchar、binary或varbinary数据类型的可选参数。
style日期格式样式,借以将datetime或smalldatetime数据转换为字符数据(nchar、nvarchar、char、varchar、nchar或nvarchar数据类型);或者字符串格式样式,借以将float、real、money或smallmoney数据转换为字符数据(nchar、nvarchar、char、varchar、nchar或nvarchar数据类型)。
SQL Server 支持使用科威特算法的阿拉伯样式中的数据格式。
在表中,左侧的两列表示将datetime或smalldatetime转换为字符数据的style值。
给style值加100,可获得包括世纪数位的四位年份(yyyy)。
* 默认值(style 0 或100、9 或109、13 或113、20 或120、21 或121)始终返回世纪数位(yyyy)。
** 当转换为datetime 时输入;当转换为字符数据时输出。
*** 专门用于XML。
对于从datetime或smalldatetime到character数据的转换,输出格式如表中所示。
对于从float、money或smallmoney到character数据的转换,输出等同于style 2。
sql⽇期时间函数+格式转换<⽇期时间函数>(可参考下列表格)转换函数to_date() 作⽤将字符类型按⼀定格式转化为⽇期类型:具体⽤法:to_date(‘2004-11-27’,’yyyy-mm-dd’),前者为字符串,后者为转换⽇期格式,注意,前后两者要以⼀对应。
如;to_date(‘2004-11-27 13:34:43’, ‘yyyy-mm-dd hh24:mi:ss’)多种⽇期格式:YYYY:四位表⽰的年份YYY,YY,Y:年份的最后三位、两位或⼀位,缺省为当前世纪MM:01~12的⽉份编号MONTH:九个字符表⽰的⽉份,右边⽤空格填补MON:三位字符的⽉份缩写WW:⼀年中的星期D:星期中的第⼏天DD:⽉份中的第⼏天DDD:年所中的第⼏天DAY:九个字符表⽰的天的全称,右边⽤空格补齐HH,HH12:⼀天中的第⼏个⼩时,12进制表⽰法HH24:⼀天中的第⼏个⼩时,取值为00~23MI:⼀⼩时中的分钟SS:⼀分钟中的秒SSSS:从午夜开始过去的秒数to_char():将⽇期转按⼀定格式换成字符类型SQL> select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) time from dual;1、常⽤⽇期⽅法(1)DATENAME ( datepart ,date )返回表⽰指定⽇期的指定⽇期部分的字符串。
SELECT DateName(day,Getdate()) –返回1(2)DATEPART ( datepart , date )返回表⽰指定⽇期的指定⽇期部分的整数。
SELECT DATEPART(year,Getdate()) –返回2016(3)DATEADD (datepart , number, date )返回给指定⽇期加上⼀个时间间隔后的新datetime 值。
SELECT DATEADD(week,1,GetDate()) –当前⽇期加⼀周后的⽇期(4)DATEDIFF ( datepart , startdate , enddate )返回跨两个指定⽇期的⽇期边界数和时间边界数。
SQL中将时间戳转为格式化日期后进行比较日期的方法在SQL中,可以使用函数将时间戳转换为格式化日期,然后进行日期的比较。
常用的函数有FROM_UNIXTIME(、DATE_FORMAT(和STR_TO_DATE(等。
下面详细介绍这些函数的用法。
2. DATE_FORMAT(函数:该函数可以将日期转换为指定的格式。
它需要两个参数:一个是日期,另一个是指定的日期格式字符串。
例如,DATE_FORMAT(date, format)可以将一个日期转换为指定格式的字符串。
其中,日期参数可以是一个日期、时间戳或日期时间字符串。
3. STR_TO_DATE(函数:该函数用于将字符串转换为日期。
它需要两个参数:一个是字符串,另一个是日期格式字符串。
例如,STR_TO_DATE(string, format)可以将一个字符串转换为指定格式的日期。
其中,字符串参数必须符合指定的日期格式。
下面是一个示例,演示如何使用以上函数将时间戳转换为日期,并进行日期的比较。
假设有一个名为orders的表,其中包含一个名为order_date的时间戳字段,并且需要筛选出所有日期大于或等于2024-01-01的订单。
```sqlSELECT*FROM ordersWHERE DATE(FROM_UNIXTIME(order_date)) >= '2024-01-01';```上述查询首先使用FROM_UNIXTIME(函数将order_date字段的时间戳转换为格式化的日期时间字符串。
然后,使用DATE(函数提取日期部分,并与指定的日期'2024-01-01'进行比较。
如果日期大于或等于指定日期,则返回对应的订单记录。
另外,如果order_date字段已经是格式化的日期字符串,可以直接使用STR_TO_DATE(函数将字符串转换为日期,并进行比较。
```sqlSELECT*FROM ordersWHERE STR_TO_DATE(order_date, '%Y-%m-%d') >= '2024-01-01';```在上述查询中,STR_TO_DATE(函数将order_date字段的字符串按照指定的日期格式'%Y-%m-%d'转换为日期,并与指定的日期'2024-01-01'进行比较。
在PostgreSQL中,可以使用日期和时间函数来转换时间格式。
以下是一些常见的转换常识:1. 转换为日期格式:```sqlSELECT TO_DATE('2023-07-19 10:30:00', 'YYYY-MM-DD HH24:MI:SS');```这将把字符串'2023-07-19 10:30:00'转换为日期格式。
'YYYY-MM-DD HH24:MI:SS'是日期字符串的模板,其中YYYY表示年份,MM表示月份,DD表示日期,HH24表示小时(24小时制),MI表示分钟,SS表示秒。
2. 转换为特定时间格式:```sqlSELECT TO_CHAR(NOW(), 'DD-MM-YYYY HH24:MI:SS');```这将把当前时间转换为'DD-MM-YYYY HH24:MI:SS'格式的字符串。
你可以根据需要调整时间格式模板。
3. 从日期格式转换为时间戳:```sqlSELECT TO_TIMESTAMP('2023-07-19 10:30:00', 'YYYY-MM-DD HH24:MI:SS');```这将把日期字符串'2023-07-19 10:30:00'转换为时间戳格式。
4. 从时间戳转换为日期格式:```sqlSELECT TO_DATE(1671363623, 'YYYYMMDDHH24MISS');```这将把时间戳1671363623转换为日期格式。
注意,这里的时间戳是十进制的。
这些是一些常见的转换示例,你可以根据具体需求使用适当的函数和模板进行时间格式的转换。
SQLServer中时间格式转换函数convert()的使⽤convert(varchar(10),字段名,转换格式)CONVERT为⽇期转换函数,⼀般就是在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候才⽤到;函数的3个参数:第1个参数为转换后的⼤;第2个为转换⽇期的字段或函数;第3个为转换的格式。
具体例⼦:SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2011 10:57AMSELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/11SELECT CONVERT(varchar(100), GETDATE(), 2): 11.05.16SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/11SELECT CONVERT(varchar(100), GETDATE(), 4): 16.05.11SELECT CONVERT(varchar(100), GETDATE(), 5): 16-05-11SELECT CONVERT(varchar(100), GETDATE(), 6): 16 05 11SELECT CONVERT(varchar(100), GETDATE(), 7): 05 16, 11SELECT CONVERT(varchar(100), GETDATE(), 8): 10:57:46SELECT CONVERT(varchar(100), GETDATE(), 9): 05 16 2011 10:57:46:827AMSELECT CONVERT(varchar(100), GETDATE(), 10): 05-16-11SELECT CONVERT(varchar(100), GETDATE(), 11): 11/05/16SELECT CONVERT(varchar(100), GETDATE(), 12): 110516SELECT CONVERT(varchar(100), GETDATE(), 13): 16 05 2011 10:57:46:937SELECT CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967SELECT CONVERT(varchar(100), GETDATE(), 20): 2011-05-16 10:57:47SELECT CONVERT(varchar(100), GETDATE(), 21): 2011-05-16 10:57:47.157SELECT CONVERT(varchar(100), GETDATE(), 22): 05/16/11 10:57:47 AMSELECT CONVERT(varchar(100), GETDATE(), 23): 2011-05-16SELECT CONVERT(varchar(100), GETDATE(), 24): 10:57:47SELECT CONVERT(varchar(100), GETDATE(), 25): 2011-05-16 10:57:47.250SELECT CONVERT(varchar(100), GETDATE(), 100): 05 16 2011 10:57AMSELECT CONVERT(varchar(100), GETDATE(), 101): 05/16/2011SELECT CONVERT(varchar(100), GETDATE(), 102): 2011.05.16SELECT CONVERT(varchar(100), GETDATE(), 103): 16/05/2011SELECT CONVERT(varchar(100), GETDATE(), 104): 16.05.2011SELECT CONVERT(varchar(100), GETDATE(), 105): 16-05-2011SELECT CONVERT(varchar(100), GETDATE(), 106): 16 05 2011SELECT CONVERT(varchar(100), GETDATE(), 107): 05 16, 2011SELECT CONVERT(varchar(100), GETDATE(), 108): 10:57:49SELECT CONVERT(varchar(100), GETDATE(), 109): 05 16 2011 10:57:49:437AMSELECT CONVERT(varchar(100), GETDATE(), 110): 05-16-2011SELECT CONVERT(varchar(100), GETDATE(), 111): 2011/05/16SELECT CONVERT(varchar(100), GETDATE(), 112): 20110516SELECT CONVERT(varchar(100), GETDATE(), 113): 16 05 2011 10:57:49:513SELECT CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547SELECT CONVERT(varchar(100), GETDATE(), 120): 2011-05-16 10:57:49SELECT CONVERT(varchar(100), GETDATE(), 121): 2011-05-16 10:57:49.700SELECT CONVERT(varchar(100), GETDATE(), 126): 2011-05-16T10:57:49.827SELECT CONVERT(varchar(100), GETDATE(), 130): 16 05 2011 10:57:49:513AMSELECT CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM⼀、sql server中的⽇期与时间函数1. GetDate( ) 返回系统⽬前的⽇期与时间select getdate()2.DateAdd (interval,number,date) 以interval指定的⽅式,向指定⽇期加上⼀段时间number,返回新的 datetime 值 例如:向⽇期加上2天select dateadd(day,2,'2010-10-15') --返回:2010-10-17 00:00:00.000以此类推:向⽇期倒推⼏天或⼏个⽉也是可以的。
SqlServer⽇期时间格式转换sql server2000中使⽤convert来取得datetime数据类型样式(全)⽇期数据格式的处理,两个⽰例:CONVERT(varchar(16), 时间⼀, 20) 结果:2007-02-01 08:02/*时间⼀般为getdate()函数或数据表⾥的字段*/CONVERT(varchar(10), 时间⼀, 23) 结果:2007-02-01 /*varchar(10)表⽰⽇期输出的格式,如果不够长会发⽣截取*/语句及查询结果:Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSelect CONVERT(varchar(100), GETDATE(), 1): 05/16/06Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AMSelect CONVERT(varchar(100), GETDATE(), 10): 05-16-06Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16Select CONVERT(varchar(100), GETDATE(), 12): 060516Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AMSelect CONVERT(varchar(100), GETDATE(), 23): 2006-05-16Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AMSelect CONVERT(varchar(100), GETDATE(), 101): 05/16/2006Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AMSelect CONVERT(varchar(100), GETDATE(), 110): 05-16-2006Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16Select CONVERT(varchar(100), GETDATE(), 112): 20060516Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AMSelect CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM说明:使⽤ CONVERT:CONVERT ( data_type [ ( length ) ] , expression [ , style ] )参数expression是任何有效的 Microsoft® SQL Server™ 表达式。
在SQL 中,可以使用不同的格式来存储日期和时间。
以下是一些常用的日期和时间格式:
1. 格式化日期:
```sql
SELECT DATE_FORMAT(date_column, '%Y-%m-%d') AS formatted_date FROM table_name;
```
这将返回一个格式为'YYYY-MM-DD' 的日期字符串。
2. 格式化时间:
```sql
SELECT DATE_FORMAT(time_column, '%H:%i:%s') AS formatted_time FROM table_name;
```
这将返回一个格式为'HH:MI:SS' 的时间字符串。
3. 格式化日期和时间:
```sql
SELECT DATE_FORMAT(datetime_column, '%Y-%m-%d %H:%i:%s') AS formatted_datetime FROM table_name;
```
这将返回一个格式为'YYYY-MM-DD HH:MI:SS' 的日期时间字符串。
其中,`date_column`、`time_column` 和`datetime_column` 是存储日期、时间和日期时间的列名,`table_name` 是包含这些列的表名。
在格式字符串中,`%Y` 表示四位数的年份,`%m` 表示两位数的月份,`%d` 表示两位数的日期,`%H` 表示两位数的小时数,`%i` 表示两位数的分钟数,`%s` 表示两位数的秒数。
SQL语句转换格式函数Cast、Convert CAST和CONVERT都经常被使⽤。
特别提取出来作为⼀篇⽂章,⽅便查找。
CAST、CONVERT都可以执⾏数据类型转换。
在⼤部分情况下,两者执⾏同样的功能,不同的是CONVERT还提供⼀些特别的⽇期格式转换,⽽CAST没有这个功能。
既然CONVERT包括了CAST的所有功能,⽽且CONVERT还能进⾏⽇期转换,那么为什么需要使⽤CAST呢?实际上,这是为了ANSI/ISO兼容。
CAST是ANSI兼容的,⽽CONVERT则不是。
语法: CAST (expression AS data_type [ (length ) ]) CONVERT (data_type [ ( length ) ] , expression [ , style ]) ⽰例: SELECT 'AB' + 1 --此语句报错,在将 varchar 值 'AB' 转换成数据类型 int 时失败。
SELECT 'AB' + CAST(1 AS varchar) --输出 AB1 SELECT 'AB' + CONVERT(varchar,1) --输出 AB1 CAST和CONVERT都能转换时间: SELECT CONVERT(DateTime,'2011-07-11') --输出 2011-07-11 00:00:00.000 SELECT CAST('2011-07-11' AS DateTime) --输出 2011-07-11 00:00:00.000 但是时间转字符串,CAST没有CONVERT这么多花样: SELECT CONVERT(varchar,GETDATE(),5) --输出 01-07-13 SELECT CONVERT(varchar,GETDATE(),111) --输出 2013/07/01 SELECT CONVERT(varchar,GETDATE(),1) --输出 07/01/13 SELECT CAST(GETDATE() AS varchar) --输出 07 1 2013 9:56PM。