我有一个相当简单的分页查询,用于从表中获取行
ALTER PROCEDURE mytable.[news_editor_paginate]
@count int,
@start int,
@orderby int
AS
BEGIN
SET NOCOUNT ON;
SELECT TOP (@count) * FROM
(
SELECT news_edits.*,
ROW_NUMBER() OVER (
ORDER BY CASE
WHEN @orderby = 0 THEN news_edits.[time]
WHEN @orderby = 1 THEN news_edits.lastedit
WHEN @orderby = 2 THEN news_edits.title
END
DESC
) AS num
FROM news_edits
) AS a
WHERE num > @start
END
该@orderby
参数决定结果应按哪一列排序。
news_edit.[time]
和news_edits.lastedit
都是日期时间字段。但是news_edits.title
是varchar字段。
对于两个datetime字段,查询运行都很好,但是当@orderby = 2
出现以下错误时:
“从字符串转换日期和/或时间时转换失败。”
我遇到的问题是我没有尝试转换任何东西吗?
您需要将您的语句划分ORDER BY
为多个CASE
语句:
ORDER BY
CASE WHEN @orderby = 0 THEN news_edits.[time] END DESC,
CASE WHEN @orderby = 1 THEN news_edits.lastedit END DESC,
CASE WHEN @orderby = 2 THEN news_edits.title END DESC
这是因为单个CASE
语句要求所有分支都具有兼容的数据类型。由于一个字符串CASE
无法转换为另一个字符串返回的日期时间CASE
,因此会出现转换错误。
问题内容: 我试图创建一个表,如下所示, 首先,我尝试如下插入值, 它给出了错误的说法, 无法将varchar转换为日期时间 然后,我尝试使用以下格式作为我们stackoverflow建议的帖子之一, 但是我仍然收到错误消息, 从字符串转换日期和/或时间时转换失败 有什么建议? 问题答案: SQL Server支持多种格式-有关CAST和CONVERT的信息,请参见MSDN联机丛书。这些格式中的大
问题内容: 在SQL 9(2005)中创建了一个存储过程,此后已升级到SQL 10(2008)。从那时起,以下存储过程停止工作并引发上述错误: 传入的参数@vPortalUID包含:2A66057D-F4E5-4E2B-B2F1-38C51A96D385。我执行这样的存储过程: 它跌倒了。我也尝试过转换。仍然没有喜悦。也具有将{}括起来的价值。我如上所述以编程方式和手动方式删除了这些内容。 如果您
问题内容: 我在mysql中使用NOW()获取当前日期和时间。我想将日期值转换为varchar并将其与另一个字符串连接。我该怎么做? 问题答案: 使用DATE_FORMAT()
问题内容: 例如字符串: 我将把它们推回到数据库中正确的日期时间字段中,因此我需要将它们魔术化为实际的日期时间对象。 这是通过Django的ORM进行的,因此我无法使用SQL进行插入时的转换。 问题答案: 是将字符串解析为日期时间的主要例程。它可以处理各种格式,格式由你为其指定的格式字符串确定: 生成的对象是时区未使用的。 链接: 适用于strptime:Python 2和Python 3的 Py
问题内容: 将日期转换为JSON时,javascript会以以下格式保存日期: 但是,我不确定如何将其放入python datetime对象。我已经尝试过这些: 我相信javascript会将字符串保存为官方ISO格式,因此似乎应该有一种方法可以让python 读取它? 问题答案: 请尝试以下格式: 例如: 该的日期只是手段,它应该被解释为UTC时间,所以忽略它不会造成任何信息丢失。您可以在这里找
问题内容: 我试图将字符串转换为日期时间对象。我从新闻提要中获取的字符串格式如下:“星期四,2014年10月16日美国东部时间01:16:17” 我尝试使用datetime.strptime()进行转换。即 并得到以下错误: 追溯(最近一次通话最近): 文件“”,第1行,位于datetime.strptime(’Thu,16 Oct 2014 01:16:17 EDT’,’%a,%d%b%Y%H: