A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 10642491 黑马帝   /  2011-10-30 06:53  /  5374 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

数据库中如何将一个英文的日期'2011-08-08 00:00:00' 转换成'二零一一年零八月零八零八日零时零分零秒'

7 个回复

倒序浏览
没有思路呀?同求解?
回复 使用道具 举报
要不利用C#先转化然后在插入数据库么?
回复 使用道具 举报
对于这么问题我感到很无奈!!!!
我不知道楼主为何要问这个问题。。。
回复 使用道具 举报
这个我也不会所以问一下,我更愿意把它看成是“哥德巴赫猜想”呵呵,期待高手指导。
回复 使用道具 举报
写了个函数,办法比较笨,不过效果是达到了
CREATE FUNCTION ConvertDateTimeToChinese
(
        @DateTime DATETIME
)
RETURNS NVARCHAR(20)
AS
BEGIN
    -- 返回的大写中文字符串
        DECLARE @Chinese NVARCHAR(20)
        DECLARE @Str NVARCHAR(20)
        SET @Chinese = ''
        -- 将日期转换成 2000-08-11 00:00:00 格式的字符串
        SET @Str = CONVERT(VARCHAR(20),@DateTime,120)
       
        -- 将'-'替换成'年',' '替换成'日',':'替换成'时'
        SET @Str = REPLACE(@Str,'-','年')
        SET @Str = REPLACE(@Str,' ','日')
        SET @Str = REPLACE(@Str,':','时')
       
        -- 将第二个'年'替换成'月',第二个'时'替换成'分'
        SET @Str = STUFF(@Str,8,1,'月')
        SET @Str = STUFF(@Str,17,1,'分')
       
        DECLARE @Len INT
        DECLARE @i INT
        DECLARE @Num NVARCHAR(1)
        SET @Len = LEN(@Str)
        SET @i = 1
        WHILE(@i <= @Len)
        BEGIN
                SET @Num = SUBSTRING(@Str,@i,1)
                SET @Num = CASE @Num WHEN '0' THEN '零'
                WHEN '1' THEN '一'
                WHEN '2' THEN '二'
                WHEN '3' THEN '三'
                WHEN '4' THEN '四'
                WHEN '5' THEN '五'
                WHEN '6' THEN '六'
                WHEN '7' THEN '七'
                WHEN '8' THEN '八'
                WHEN '9' THEN '九'  ELSE @Num END
                SET @Chinese = @Chinese + @Num
                SET @i = @i + 1
        END
        SET @Chinese = @Chinese + '秒'
        RETURN @Chinese
END

调用上面创建的函数:
SELECT DBO.ConvertDateTimeToChinese('2011-08-08 00:00:00')

返回结果:
二零一一年零八月零八日零零时零零分零零秒

评分

参与人数 1技术分 +2 收起 理由
杨恩锋 + 2

查看全部评分

回复 使用道具 举报
黄威 黑马帝 2011-11-5 16:02:25
7#
楼上很给力呀,可是还是有点小问题:二零一一年一一月零五日一五时五一分三三秒,看着别扭
回复 使用道具 举报
DotNet菜鸟 发表于 2011-11-5 13:50
写了个函数,办法比较笨,不过效果是达到了
CREATE FUNCTION ConvertDateTimeToChinese
(

虽然这位楼主已经给出了解决方案,
但是我很不接,楼主为什么要在数据库中玩这么一个操作???这么个玩法有什么实在意义吗???
在真正的开发当中,应该不会有人这么玩吧!
即便真的有需要要对日期进行中文和数字的转换,
那我们完全可以用我们强大的C#代码来实现
(因为C#里面封装了很多特有的方法可以很容易的处理这些个问题,但是SQL Server 是专门用来处理数据的,我理解为他应该专注与对数据的查询,查询性能的优化,表结构的可扩展性,高并发和索引处理等等,而不是拿来处理你这些)

当然也可以做,但是我觉得只是在必要的时候做一些简单的转换,等,也许理解的不是很正确,但是希望对你有帮助

评分

参与人数 1技术分 +1 收起 理由
杨恩锋 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马