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。
SQLserver中⽤convert函数转换⽇期格式SQL Server中⽂版的默认的⽇期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm例如:select getdate()2004-09-12 11:06:08.177整理了⼀下SQL Server⾥⾯可能经常会⽤到的⽇期格式转换⽅法:举例如下:select CONVERT(varchar, getdate(), 120 )2004-09-12 11:06:08select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')20040912110608select CONVERT(varchar(12) , getdate(), 111 )2004/09/12select CONVERT(varchar(12) , getdate(), 112 )20040912select CONVERT(varchar(12) , getdate(), 102 )2004.09.12select CONVERT(varchar(12) , getdate(), 101 )09/12/2004select CONVERT(varchar(12) , getdate(), 103 )12/09/2004select CONVERT(varchar(12) , getdate(), 104 )12.09.2004select CONVERT(varchar(12) , getdate(), 105 )12-09-2004select CONVERT(varchar(12) , getdate(), 106 )12 09 2004select CONVERT(varchar(12) , getdate(), 107 )09 12, 2004select CONVERT(varchar(12) , getdate(), 108 )11:06:08select CONVERT(varchar(12) , getdate(), 109 )09 12 2004 1select CONVERT(varchar(12) , getdate(), 110 )09-12-2004select CONVERT(varchar(12) , getdate(), 113 )12 09 2004 1select CONVERT(varchar(12) , getdate(), 114 )11:06:08.177select getdate()结果:2003-12-28 16:52:00.107select convert(char(8),getdate(),112)结果:20031228select convert(char(8),getdate(),108)结果:16:52:00select convert(char(8),getdate(),112)指⽇期格式规则如下:不带世纪数位 (yy) 带世纪数位 (yyyy) 标准输⼊/输出**1 101 美国 mm/dd/yyyy2 102 ANSI yy.mm.dd3 103 英国/法国 dd/mm/yy4 104 德国 dd.mm.yy5 105 意⼤利 dd-mm-yy6 106 - dd mon yy7 107 - mon dd, yy8 108 - hh:mm:ss- 9 或 109 (*) 默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)10 110 美国 mm-dd-yy11 111 ⽇本 yy/mm/dd12 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* 默认值(style 0 或 100、9 或 109、13 或 113、20 或 120、21 或 121)始终返回世纪数位 (yyyy)。
sql时间转换格式convert(varchar(10),字段名,转换格式)convert(varchar(10),字段名,转换格式)CONVERT(nvarchar(10),count_time,121) CONVERT为日期转换函数,一般就是在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar) 相互转换的时候才用到的函数的3个参数,第1个参数为,转换后的大小,第2个为转换日期的字段或函数,第3个为转换的格式.具体如下: 0 | 0 or 100 | mon dd yyyy hh:miAM(或PM) 1 | 101 | mm/dd/yy 2 | 102 | 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 | 9 or 109 | mon dd yyyy hh:mi:ss:mmmmAM(或PM) 10 | 110 | mm-dd-yy 11 | 111 | yy/mm/dd 12 | 112 | yymmdd 11| 13 or 113 | dd mon yyyy hh:mi:ss:mmm(24小时制) 14 | 114 | hh:mi:ss:mmm(24小时制) 15 | 20 or 120 | yyyy-mm-dd hh:mi:ss(24小时制) 16 | 21 or 121 | yyyy-mm-dd hh:mi:ss:mmm(24小时制) 具体例子:SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2011 10:57AM SELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/11 SELECT CONVERT(varchar(100), GETDATE(), 2): 11.05.16 SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/11 SELECT CONVERT(varchar(100), GETDATE(), 4): 16.05.11 SELECT CONVERT(varchar(100), GETDATE(), 5): 16-05-11 SELECT CONVERT(varchar(100), GETDATE(), 6): 16 05 11 SELECT CONVERT(varchar(100), GETDATE(), 7): 05 16, 11 SELECT CONVERT(varchar(100), GETDATE(), 8): 10:57:46 SELECT CONVERT(varchar(100), GETDATE(), 9): 05 16 2011 10:57:46:827AM SELECT CONVERT(varchar(100), GETDATE(), 10): 05-16-11 SELECT CONVERT(varchar(100), GETDATE(), 11):11/05/16 SELECT CONVERT(varchar(100), GETDATE(), 12): 110516 SELECT CONVERT(varchar(100), GETDATE(), 13): 16 05 2011 10:57:46:937 SELECT CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967 SELECT CONVERT(varchar(100), GETDATE(), 20): 2011-05-16 10:57:47 SELECT CONVERT(varchar(100), GETDATE(), 21): 2011-05-16 10:57:47.157 SELECT CONVERT(varchar(100), GETDATE(), 22): 05/16/11 10:57:47 AM SELECT CONVERT(varchar(100), GETDATE(), 23): 2011-05-16 SELECT CONVERT(varchar(100), GETDATE(), 24): 10:57:47 SELECT CONVERT(varchar(100), GETDATE(), 25): 2011-05-16 10:57:47.250 SELECT CONVERT(varchar(100), GETDATE(), 100): 05 16 2011 10:57AM SELECT CONVERT(varchar(100), GETDATE(), 101): 05/16/2011SELECT CONVERT(varchar(100), GETDATE(), 102): 2011.05.16 SELECT CONVERT(varchar(100), GETDATE(), 103): 16/05/2011 SELECT CONVERT(varchar(100), GETDATE(), 104): 16.05.2011 SELECT CONVERT(varchar(100), GETDATE(), 105): 16-05-2011 SELECT CONVERT(varchar(100), GETDATE(), 106): 16 05 2011 SELECT CONVERT(varchar(100), GETDATE(), 107): 05 16, 2011 SELECT CONVERT(varchar(100), GETDATE(), 108): 10:57:49 SELECT CONVERT(varchar(100), GETDATE(), 109): 05 16 2011 10:57:49:437AM SELECT CONVERT(varchar(100), GETDATE(), 110): 05-16-2011SELECT CONVERT(varchar(100), GETDATE(), 111): 2011/05/16 SELECT CONVERT(varchar(100), GETDATE(), 112): 20110516 SELECT CONVERT(varchar(100), GETDATE(), 113): 16 05 2011 10:57:49:513 SELECT CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547 SELECT CONVERT(varchar(100), GETDATE(), 120): 2011-05-16 10:57:49 SELECT CONVERT(varchar(100), GETDATE(), 121): 2011-05-16 10:57:49.700 SELECT CONVERT(varchar(100),GETDATE(), 126): 2011-05-16T10:57:49.827 SELECT CONVERT(varchar(100), GETDATE(), 130): 18 1427 10:57:49:907AM SELECT CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM常用: Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46 Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47 Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49 Select CONVERT(varchar(100), GETDATE(), 12): 110516 Select CONVERT(varchar(100), GETDATE(), 23): 2011-05-16---常用实例操作:一、sql server日期时间函数 Sql Server中的日期与时间函数1. 当前系统日期、时间 select getdate()2. dateadd 在向指定日期加上一段时间的基础上,返回新的datetime 值例如:向日期加上2天 select dateadd(day,2,'2010-10-15') --返回:2010-10-17 00:00:00.000以此类推:向日期倒推几天或几个月也是可以的。
Sql日期时间格式转换Sql日期时间格式转换日期数据格式的处理,两个示例: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), GETDA TE(), 1): 05/16/06Select CONVERT(varchar(100), GETDA TE(), 2): 06.05.16Select CONVERT(varchar(100), GETDA TE(), 3): 16/05/06Select CONVERT(varchar(100), GETDA TE(), 4): 16.05.06Select CONVERT(varchar(100), GETDA TE(), 5): 16-05-06Select CONVERT(varchar(100), GETDA TE(), 6): 16 05 06Select CONVERT(varchar(100), GETDA TE(), 7): 05 16, 06Select CONVERT(varchar(100), GETDA TE(), 8): 10:57:46Select CONVERT(varchar(100), GETDA TE(), 9): 05 16 2006 10:57:46:827AMSelect CONVERT(varchar(100), GETDA TE(), 10): 05-16-06Select CONVERT(varchar(100), GETDA TE(), 11): 06/05/16Select CONVERT(varchar(100), GETDA TE(), 12): 060516Select CONVERT(varchar(100), GETDA TE(), 13): 16 05 2006 10:57:46:937Select CONVERT(varchar(100), GETDA TE(), 14): 10:57:46:967Select CONVERT(varchar(100), GETDA TE(), 20): 2006-05-16 10:57:47Select CONVERT(varchar(100), GETDA TE(), 21): 2006-05-16 10:57:47.157Select CONVERT(varchar(100), GETDA TE(), 22): 05/16/06 10:57:47 AMSelect CONVERT(varchar(100), GETDA TE(), 23): 2006-05-16Select CONVERT(varchar(100), GETDA TE(), 24): 10:57:47Select CONVERT(varchar(100), GETDA TE(), 25): 2006-05-16 10:57:47.250Select CONVERT(varchar(100), GETDA TE(), 100): 05 16 2006 10:57AMSelect CONVERT(varchar(100), GETDA TE(), 101): 05/16/2006Select CONVERT(varchar(100), GETDA TE(), 102): 2006.05.16Select CONVERT(varchar(100), GETDA TE(), 103): 16/05/2006Select CONVERT(varchar(100), GETDA TE(), 104): 16.05.2006Select CONVERT(varchar(100), GETDA TE(), 105): 16-05-2006Select CONVERT(varchar(100), GETDA TE(), 106): 16 05 2006Select CONVERT(varchar(100), GETDA TE(), 107): 05 16, 2006Select CONVERT(varchar(100), GETDA TE(), 108): 10:57:49Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AMSelect CONVERT(varchar(100), GETDA TE(), 110): 05-16-2006Select CONVERT(varchar(100), GETDA TE(), 111): 2006/05/16Select CONVERT(varchar(100), GETDA TE(), 112): 20060516Select CONVERT(varchar(100), GETDA TE(), 113): 16 05 2006 10:57:49:513Select CONVERT(varchar(100), GETDA TE(), 114): 10:57:49:547Select CONVERT(varchar(100), GETDA TE(), 120): 2006-05-16 10:57:49Select CONVERT(varchar(100), GETDA TE(), 121): 2006-05-16 10:57:49.700Select CONVERT(varchar(100), GETDA TE(), 126): 2006-05-16T10:57:49.827Select CONVERT(varchar(100), GETDA TE(), 130): 18 ???? ?????? 1427 10:57:49:907AM Select CONVERT(varchar(100), GETDA TE(), 131): 18/04/1427 10:57:49:920AM说明:使用CONVERT:CONVERT ( data_type [ ( length ) ] , expression [ , style ] )参数expression是任何有效的Microsoft® SQL Server™ 表达式。
SQLServer日期查询时的日期格式转换问题提出:经常会有这样的查询要求,输入或者日历控件产生的日期格式为yyyy-mm-dd,而数据库中的字段是datetime类型,即yyyy-mm-dd hh:mm:ss。
如果简单的使用between语句或者=语句进行查询,查询结果可能是错误或者数据不全。
假设数据库中有2008-2-27 日的数据,但直接使用fielddate='2008-2-27' 或者使用 between '2008-2-27' and '2008-2-27'将不能查到该天的数据。
问题解决:使用SQL Server提供的Convert函数进行转换,由于2008-02-27最长是10位,所以使用如下语句convert(varchar(10),fielddate,121))进行转换,其中fielddate为数据表的字段名。
这样在查询时数据库得到参数后先自动将数据库内的信息转换为yyyy-mm-dd格式的10位字符,只要与参数相同即可返回查询结果.而convert中的121是指将 datetime类型转换为char类型时获得包括世纪位数的4位年份。
Convert函数的一些说明,以下资料来源于网络不带世纪数位 (yy)带世纪数位 (yyyy)标准输入/输出**-0 或100 (*) 默认值mon dd yyyy hh:miAM(或PM)1101美国mm/dd/yyyy2102ANSIyy.mm.dd3103英国/法国dd/mm/yy4104德国dd.mm.yy5105意大利dd-mm-yy6106-dd mon yy7107-mon dd, yy8108-hh:mm:ss-9 或 109 (*) 默认值 + 毫秒mon dd yyyy hh:mi:ss:mmmAM(或 PM)10110美国mm-dd-yy11111日本yy/mm/dd12112ISOyymmdd-13 或 113 (*) 欧洲默认值+ 毫秒dd mon yyyy hh:mm:ss:mmm(24h)14114-hh:mi:ss:mmm(24h)-20 或120 (*) ODBC 规范yyyy-mm-dd hh:mm:ss[.fff]-21 或121 (*) ODBC 规范(带毫秒)yyyy-mm-ddhh:mm:ss[.fff]-126(***)ISO8601yyyy-mm-dd Thh:mm:ss:mmm (不含空格)-130*科威特dd mon yyyy hh:mi:ss:mmmAM-131*科威特dd/mm/yy hh:mi:ss:mmmAM* 默认值(style 0 或 100、9 或 109、13 或 113、20 或 120、21 或 121)始终返回世纪数位 (yyyy)。