在 SQL Server 函数中将字符串转换为日期时间
我一直在 SQL Server 中编写一个用户定义的函数:
它看起来像这样:
CREATE FUNCTION FormatDate(@fromtime nvarchar(50))
RETURNS DATETIME
AS
BEGIN
DECLARE @tempfrom datetime
DECLARE @tempto nvarchar(50)
set @tempfrom = Convert(datetime, @fromtime, 100)
RETURN @tempfrom
END
select dbo.FormatDate('08/17/2010 4:30')
当我尝试运行它时,出现以下错误:
将 nvarchar 值“08/17/2010 4:30”转换为数据类型 int 时转换失败。
我做错了什么?
I have been writing a user-defined function in SQL Server:
It looks like this :
CREATE FUNCTION FormatDate(@fromtime nvarchar(50))
RETURNS DATETIME
AS
BEGIN
DECLARE @tempfrom datetime
DECLARE @tempto nvarchar(50)
set @tempfrom = Convert(datetime, @fromtime, 100)
RETURN @tempfrom
END
select dbo.FormatDate('08/17/2010 4:30')
When I try to run this, I get the following error:
Conversion failed when converting the nvarchar value '08/17/2010 4:30' to data type int.
What am I doing wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您在转换中指定的 100 用于在选择数据时进行格式化,而不是用于格式化数据存储。
日期时间只是存储为日期时间 - 就是这样(我的意思是,根据您的 SQL 设置,它可能是 MM/DD/YYYY 或 DD/MM/YYYY)。
但如果你这样做:
它现在是一个日期时间,你可以通过将其包装在另一个转换中将其转换为你想要的格式:
The 100 you're specifying in the convert is used to format when you're selecting data, not to format the storage of data.
Datetime is just stored as datetime - that's it (i mean, dependent on your SQL settings, it might be MM/DD/YYYY or DD/MM/YYYY).
But if you just do this:
it's now a datetime, which you can convert to your desired formatting by wrapping it in another convert:
为什么使用样式 100?
Why are you using style 100?