您现在的位置: 晨光科技 >> 文章 >> 技术 >> IT >> 正文  
  使用SQL格式化日期(sqlserver)         
使用SQL格式化日期(sqlserver)
[ 作者:佚名    转贴自:http://www.the9web.com/blog/2009/01/10/99/    点击数:160    更新时间:2011/5/16    文章录入:admin ]
[注:本站登载的某些文章并不代表本站支持或反对其观点或肯定其真实性]

使用SQL格式化日期(sqlserver)
 常用的是在程序里格式化日期,最近想用sql处理更多的事情,一方面可能减轻编程工作量,另一方面可以降低web服务器的负担,不过同时会增加db服务器的负担哦。

简单的两个如下:

--格式2009年1月10日 

1. SELECT CAST(YEAR(GETDATE()) AS NVARCHAR) + '年' + CAST(MONTH(GETDATE()) AS NVARCHAR) +'月' + CAST(DAY(GETDATE()) AS NVARCHAR) + '日'


2. SELECT CAST(YEAR(GETDATE()) AS NVARCHAR) + '年' + (CASE WHEN MONTH(GETDATE())<10 THEN '0' ELSE '' END) + CAST(MONTH(GETDATE()) AS NVARCHAR) +'月' + (CASE WHEN DAY(GETDATE())<10 THEN '0' ELSE '' END) + CAST(DAY(GETDATE()) AS NVARCHAR) + '日

但是如果我想要形如yyyymmdd就或yyyymm的格式,怎么办呢?


这里就直接说要yyyymmm格式的吧,这种格式是在yyyymmdd的基础上进行字符串操作,这个包括的方面更多一些,

具体如下:

select SUBSTRING(CONVERT(varchar, getdate(), 112 ),0,7)

看,就这么简单,不过你可能要问了,112是什么意思呢?这就要拿出官方的文档来说话了,
SQL server 内置支持格式:
使用 CONVERT 函数:
CONVERT (data_type[(length)], expression [, style])


下表中,左侧的两列表示将 datetime 或 smalldatetime 转换为字符数据的 style 值。给 style 值加 100,可获得包括世纪数位的四位年份 (yyyy)。

不带世纪数位 (yy) (1) 带世纪数位 (yyyy) 标准 输入/输出 (3)
- 0100 (1, 2) 默认 mon dd yyyy hh:miAM(或 PM)
1 101 美国 mm/dd/yyyy
2 102 ANSI yy.mm.dd
3 103 英国/法国 dd/mm/yyyy
4 104 德国 dd.mm.yy
5 105 意大利 dd-mm-yy
6 106 (1) - dd mon yy
7 107 (1) - mon dd, yy
8 108 - hh:mi:ss
- 9109 (1, 2) 默认设置 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10 110 美国 mm-dd-yy
11 111 日本 yy/mm/dd
12 112 ISO yymmdd
yyyymmdd
- 13113 (1, 2) 欧洲默认设置 + 毫秒 dd mon yyyy hh:mi:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20120 (2) ODBC 规范 yyyy-mm-dd hh:mi:ss(24h)
- 21121 (2) ODBC 规范(带毫秒) yyyy-mm-dd hh:mi:ss.mmm(24h)
- 126 (4) ISO8601 yyyy-mm-ddThh:mi:ss.mmm(无空格)
- 127(6, 7) 带时区 Z 的 ISO8601。 yyyy-mm-ddThh:mi:ss.mmmZ
(无空格)
- 130 (1, 2) 回历 (5) dd mon yyyy hh:mi:ss:mmmAM
- 131 (2) 回历 (5) dd/mm/yy hh:mi:ss:mmmAM

*    默认值(style 0 或 100、9 或 109、13 或 113、20 或 120、21 或 121)始终返回世纪数位 (yyyy)。
** 当转换为 datetime 时输入;当转换为字符数据时输出。
更多信息参见:SQL 联机丛书

格式化建议:
正常情况下,我们不需要在存储过程中或者内联SQL语句中,格式化化输出时间日期类型,而应该按原样返回给应用程序,将格式化工作留给应用程序,这样灵活性更大,更加方便。
对于C# 中格式化日期请参考:
日期与时间格式字符串
标准 DateTime 格式字符串
自定义 DateTime 格式字符串 

SQL Server 支持使用科威特算法的阿拉伯样式中的数据格式。

这下就明白112的作用了,同时根据文档可以获取更多你想要的格式了。

CAST 和 CONVERT (Transact-SQL)

  将一种数据类型的表达式转换为另一种数据类型的表达式。

  Transact-SQL 语法约定

  语法

  Syntax for CAST:

  CAST ( expression AS data_type [ (length ) ])

  Syntax for CONVERT:

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

  参数

  expression

  任何有效的表达式

  data_type

  目标数据类型。这包括 xmlbigintsql_variant。不能使用别名数据类型。有关可用数据类型的详细信息,请参阅数据类型 (Transact-SQL)。

  length

  指定目标数据类型长度的可选整数。默认值为 30。

  style

  指定 CONVERT 函数如何转换 expression 的整数表达式。如果样式为 NULL,则返回 NULL。该范围是由 data_type 确定的。有关详细信息,请参阅“备注”部分。

  返回类型

  返回转换为 data_typeexpression

  注释

  Date 和 Time 样式

  如果 expression 为 date 或 time 数据类型,则 style 可以为下表中显示的值之一。其他值作为 0 进行处理。SQL Server 使用科威特算法来支持阿拉伯样式的日期格式。

  例如:

  select convert(varchar,getdate(),12)here

  
12 112 ISO yymmdd
yyyymmdd
输出:100415 --(-04-15)

  select convert(varchar,getdate(),101)here

  
1 101 美国 mm/dd/yyyy
输出:04/15/2010

  • 上一篇文章: 数据恢复工具winhex教程

  • 下一篇文章: SQL Server:视图的架构刷新和绑定
  •    
    [注:标题搜索比内容搜索快]
    发表评论】【告诉好友】【打印此文】【关闭窗口
     最新5篇热点文章
  • 轨道钢承重计算公式及应用[109]

  • 【选型】如何为变频器选取阻值…[86]

  • AIS2023参展厂商名录[346]

  • AGV综合选型[170]

  • APIE 2023第4届亚太国际智能装…[138]

  •  
     最新5篇推荐文章
  • 外媒:正在唤醒中国的习近平[305]

  • 中国反伪科学运动背后的CIA黑手…[494]

  • [转载]袁隆平真言:中国最大的…[668]

  • 台专家:当年我们造IDF时 大陆…[572]

  • 旅日华人:中国严重误判日本民…[577]

  •  
     相 关 文 章
  • SqlConnection.ConnectionStri…[149]

  • 关于SQL SERVER排序规则[77]


  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
        没有任何评论
    设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 | 
    版权所有 Copyright© 2003 晨光科技        站长:璀璨星辰        页面执行时间:300.78毫秒
    Powered by:MyPower Ver3.5