|
|
Ms SQL Server 2005 如何用subtring才能解决我找出日期?
[复制链接]
|
|
|
发表于 14-11-2008 01:27 PM
|
显示全部楼层
原帖由 musxell 于 14-11-2008 09:18 AM 发表 
给错,wrong information
Ce.He 15/10/2008 4:13
现在的input是以上那样,日期的format是dd/mm/yyyy hh:mm
SQL server里面接受 mm/dd/yyyy,我就瓜在这里了
google找不到dd/mm/yyyy hh:mm可以直接conver ...
- DECLARE @input varchar(50)
- DECLARE @rev VARCHAR(50)
- DECLARE @tempDate VARCHAR(50)
- SET @input = 'Ce.He 15/10/2008 4:13 PM'
- -- Start extracting the date from input string --
- SET @rev = REVERSE(@input)
- SELECT @tempDate = CAST(REVERSE(SUBSTRING(@rev, 0, charindex(' ',@rev, CHARINDEX('/', @rev,0)))) AS VARCHAR)
- DECLARE @first INT
- DECLARE @second INT
- DECLARE @len INT
- DECLARE @newDate varchar(50)
- DECLARE @result DATETIME
- SELECT @first = CHARINDEX('/', @tempDate, 0)
- SELECT @second = CHARINDEX('/', @tempDate, @first+1)
- SELECT @len = LEN(@input)
- SELECT @newDate = SUBSTRING(@tempDate, @first+1, @second-@first-1)+'-' + SUBSTRING(@tempDate, 1, @first-1) + '-' + SUBSTRING(@tempDate, @second+1, @len-@second)
- SELECT @result = CAST(@newDate as DATETIME)
复制代码
这个应该是你所要得,可能方法不是很正确
@result 是 DateTime, 所以你要如何的格式都可以
用 CONVERT(varchar(50), @result, 100), 会得到 "Oct 15 2008 4:13PM"
请参考User Help |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 14-11-2008 04:43 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 14-11-2008 05:20 PM
|
显示全部楼层
原帖由 musxell 于 14-11-2008 04:43 PM 发表 
想问你下
为什么没有result的?
出了这句Command(s) completed successfully.
我加一句这个RETURN @result
会有问题哦
A RETURN statement with a return value cannot be used in this context.
...
应该是你的Syntax错了
比较你现在用的Script 和以下的,你就会看到问题了
- CREATE FUNCTION test
- (
- @input varchar(50)
- )
- RETURNS DATETIME
- AS
- BEGIN
- DECLARE @rev VARCHAR(50)
- DECLARE @tempDate VARCHAR(50)
- DECLARE @first INT
- DECLARE @second INT
- DECLARE @len INT
- DECLARE @newDate varchar(50)
- DECLARE @result DATETIME
- -- Start extracting the date from input string --
- SET @rev = REVERSE(@input)
- SELECT @tempDate = CAST(REVERSE(SUBSTRING(@rev, 0, charindex(' ',@rev, CHARINDEX('/', @rev,0)))) AS VARCHAR)
- SELECT @first = CHARINDEX('/', @tempDate, 0)
- SELECT @second = CHARINDEX('/', @tempDate, @first+1)
- SELECT @len = LEN(@input)
- SELECT @newDate = SUBSTRING(@tempDate, @first+1, @second-@first-1)+'-' + SUBSTRING(@tempDate, 1, @first-1) + '-' + SUBSTRING(@tempDate, @second+1, @len-@second)
- RETURN CAST(@newDate as DATETIME)
- END
复制代码 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 14-11-2008 10:33 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 14-11-2008 11:02 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 17-11-2008 09:13 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 17-11-2008 01:56 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 19-11-2008 10:11 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 20-11-2008 01:21 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 20-11-2008 07:19 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 20-11-2008 10:53 PM
|
显示全部楼层
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|