【发布时间】:2017-11-01 12:57:37
【问题描述】:
我的日期格式如下:
Date_str
19-12-2007
31-7-2009
3-1-2010
31-11-2009
etc.
我无法执行以下操作:
CONCAT(RIGHT(Date_str,4),SUBSTRING(Date_str,3,3),LEFT(2))
因为正如您在上面看到的,日期的长度不同。 SQL Server 中有没有办法将日期提取为日期时间/日期?
我也试过
Convert(datetime, Date_str)
但它只是抛出了一个错误:
导致将 varchar 数据类型转换为 datetime 数据类型 在一个超出范围的值。
【问题讨论】:
-
将它们存储为 'YYYY-MM-DD' 并在所有 SQL 风格中避免这种情况 :)
-
日期类型没有格式。只是不要将日期存储为字符串
-
@scsimon 相反,使用正确的日期类型并避免任何问题。存储为字符串,您将永远无法修复所有错误。例如,尝试在该字符串中添加一天。或检索月份 name
-
@PRIME 问题是您使用了错误的类型来存储日期。唯一现实的解决方案是使用正确的类型,
date。您只需转换一次本地化数据,之后您就不必担心转换和格式 -
好吧,我没有,其他人这样存储它,我必须使用它..
标签: sql sql-server tsql datetime