0

你知道我如何在 SQL Server 2008 中将 yyyy-dd-mm hh:mm:ss 转换为 yyyy-mm-dd hh:mm:ss 吗?

我试过SELECT convert(varchar, StateChangeTime, 120) from History了,但它无法区分 9 日作为一个月和一天之间的差异,所以什么也没做。stateChangeTime 是 dateTime2

我要转换的示例日期2013-03-09 19:29:25应该是2013-09-03 19:29:25

帮助!

4

2 回答 2

1
  1. 这是我的理解:您的源以VARCHAR格式存储(而不是 as datetime)。
  2. 您想将该自定义格式的字符串源转换为可解析的格式。

试试这些 ms-SQL 语句:

/*****
Your Source is in a custom-format string */
DECLARE @vsInpYYYYDDMM varchar(64)
SET @vsInpYYYYDDMM = '2013-03-09 19:29:25'

/*****
Convert that source YYYY-DD-MM format to YYYY-MM-DD format */
DECLARE @vsActualYYYYMMDD varchar(64)
SET @vsActualYYYYMMDD = substring( @vsInpYYYYDDMM, 1,4) + '-' + substring( @vsInpYYYYDDMM, 9, 2) + '-' + substring(@vsInpYYYYDDMM, 6, 2) + ' ' + substring(@vsInpYYYYDDMM,12,99)

PRINT @vsActualYYYYMMDD + ' is a String'

/*****
Convert that into an actual DATETIME variable */
DECLARE @dtDateVar as datetime
SET @dtDateVar = CONVERT( datetime, @vsActualYYYYMMDD, 120)
PRINT CONVERT(varchar, @dtDateVar, 120) + ' is a DateTime'
于 2015-07-03T19:26:23.643 回答
-1

您如何将日期存储在 SQL Server 中?它是datetime列类型吗?如果是,则格式将按照向您显示的方式应用(由于区域设置)。

121formatter 选项将以您想要的格式将其作为字符串返回。

SELECT convert(nvarchar, getdate(), 121)
--returns 2013-09-24 15:51:14.363

另一方面,如果它被存储为字符串,那么您将需要对其进行一些字符串操作。

于 2013-09-24T14:52:05.197 回答