最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

SQL Server日期查询时的日期格式转换

来源:动视网 责编:小OO 时间:2025-10-01 02:11:53
文档

SQL Server日期查询时的日期格式转换

SQLServer日期查询时的日期格式转换问题提出:经常会有这样的查询要求,输入或者日历控件产生的日期格式为yyyy-mm-dd,而数据库中的字段是datetime类型,即yyyy-mm-ddhh:mm:ss。如果简单的使用between语句或者=语句进行查询,查询结果可能是错误或者数据不全。假设数据库中有2008-2-27日的数据,但直接使用fielddate='2008-2-27'或者使用between'2008-2-27'and'2008-2-27'将不能查到该天的数据。问题解决:使用S
推荐度:
导读SQLServer日期查询时的日期格式转换问题提出:经常会有这样的查询要求,输入或者日历控件产生的日期格式为yyyy-mm-dd,而数据库中的字段是datetime类型,即yyyy-mm-ddhh:mm:ss。如果简单的使用between语句或者=语句进行查询,查询结果可能是错误或者数据不全。假设数据库中有2008-2-27日的数据,但直接使用fielddate='2008-2-27'或者使用between'2008-2-27'and'2008-2-27'将不能查到该天的数据。问题解决:使用S
SQL Server日期查询时的日期格式转换

问题提出:

经常会有这样的查询要求,输入或者日历控件产生的日期格式为 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-dd hh: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)。

** 当转换为 datetime 时输入;当转换为字符数据时输出。

*** 专门用于 XML。对于从 datetime 或 smalldatetime 到 character 数据的转换,输出格式如表中所示。对于从 float、money 或 smallmoney 到 character 数据的转换,输出等同于 style 2。对于从 real 到 character 数据的转换,输出等同于 style 1。

使用 CONVERT:

CONVERT (data_type[(length)], expression [, style])

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

文档

SQL Server日期查询时的日期格式转换

SQLServer日期查询时的日期格式转换问题提出:经常会有这样的查询要求,输入或者日历控件产生的日期格式为yyyy-mm-dd,而数据库中的字段是datetime类型,即yyyy-mm-ddhh:mm:ss。如果简单的使用between语句或者=语句进行查询,查询结果可能是错误或者数据不全。假设数据库中有2008-2-27日的数据,但直接使用fielddate='2008-2-27'或者使用between'2008-2-27'and'2008-2-27'将不能查到该天的数据。问题解决:使用S
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top