小菜鸟问一个日期的问题

arthur37 2005-04-07 11:20:53
我在两个地方作同一个程序的开发,两个地方可能安装的sqlserver版本不同,执行下面的语句时,出现不同的结果
SELECT CAST(CURRENT_TIMESTAMP AS CHAR(10)) AS THISYEAR FROM DUAL

可显示的结果,一个地方是04 07 2005,另一个地方是Apr 7 200
我现在只想要前面一种形式,要怎么改设置才可以啊?

大家一定要帮帮我
先谢谢了!~~~
...全文
138 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Well 2005-04-07
  • 打赏
  • 举报
回复
SELECT convert(char(10,CURRENT_TIMESTAMP,120) AS THISYEAR FROM DUAL
点点星灯 2005-04-07
  • 打赏
  • 举报
回复
这样就可以了:
select replace(convert(varchar(20),getdate(),110),'-',' ')
arthur37 2005-04-07
  • 打赏
  • 举报
回复
谢谢楼上的各位
暂时先用 xluzhong(Ralph) 的办法,毕竟这个改动量是比较小的,而且这个程序不是我一个人做,也要尊重别人的劳动成果
呵呵
先送 xluzhong(Ralph) 50分
也谢谢talantlee(團結+一起努力=成功)和paoluo(一天到晚游泳的鱼) ,各送10分
如果有更好的解决办法,可以加分再送
点点星灯 2005-04-07
  • 打赏
  • 举报
回复
楼主:
我的电脑上是
SELECT CAST(CURRENT_TIMESTAMP AS CHAR(10)) AS THISYEAR
04 7 2005

但我在帮助中看到的是:
SELECT 'The current time is: '+ CONVERT(char(30), CURRENT_TIMESTAMP)

下面是结果集:

---------------------------------------------------
The current time is: Feb 24 1998 3:45PM



这个应该是版本的问题.
xluzhong 2005-04-07
  • 打赏
  • 举报
回复
CAST 和 CONVERT
将某种数据类型的表达式显式转换为另一种数据类型。CAST 和 CONVERT 提供相似的功能。

语法
使用 CAST:

CAST ( expression AS data_type )

使用 CONVERT:

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

参数
expression

是任何有效的 Microsoft® SQL Server™ 表达式。有关更多信息,请参见表达式。

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 数据类型)。

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

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

不带世纪数位 (yy) 带世纪数位 (yyyy)
标准
输入/输出**
- 0 或 100 (*) 默认值 mon dd yyyy hh:miAM(或 PM)
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


* 默认值(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。
paoluo 2005-04-07
  • 打赏
  • 举报
回复
不好意思,我说的是2楼。

再来学习一下。
paoluo 2005-04-07
  • 打赏
  • 举报
回复
楼上的不是楼主要的效果。

我的电脑上运行
SELECT CAST(CURRENT_TIMESTAMP AS CHAR(10)) AS THISYEAR
的结果是Apr 7 200。

我觉得应该是改设置的问题。
xluzhong 2005-04-07
  • 打赏
  • 举报
回复
set language englisth
SELECT CAST(CURRENT_TIMESTAMP AS CHAR(10)) AS THISYEAR FROM DUAL
talantlee 2005-04-07
  • 打赏
  • 举报
回复
SELECT convert(char(10),CURRENT_TIMESTAMP,120) AS THISYEAR FROM DUAL
talantlee 2005-04-07
  • 打赏
  • 举报
回复
你用convert

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧