存储在DD/mm/yyyy
列中的varchar(max)
格式的日期需要转换为yyyymmdd
格式。
不支持以下转换/转换选项。
CONVERT(VARCHAR(19), CONVERT(DATETIME, wfm.date, 3), 112)
CONVERT(VARCHAR(50), CAST(wfm.date AS DATETIME2), 112)
CAST(CAST(wfm.date AS DATETIME2(15)) AS DATETIME)
我收到有关CONVERT
语法的错误消息:
从字符串转换日期和/或时间时转换失败。
对于CAST
语法,出现此错误:
第1行:指定的比例尺15无效。 varchar中的'dd / mm / yyyy /转换为yyyymmdd格式
答案 0 :(得分:2)
理想情况下,不要将日期存储为varchar
,不要将日期存储为date
,并担心它们在演示文稿层中显示的格式。因此,您应该这样做:
SELECT TRY_CONVERT(date,YourVarcharMAXDate,103);
如果您必须获取格式yyyyMM`` (i don't recommend, change your data type of your column to
日期), then you can use a furterh
转换为
SELECT CONVERT(varchar(8),TRY_CONVERT(date,YourVarcharMAXDate,103),112);
如果数据引擎由于格式无效而无法转换日期,则TRY_CONVERT
将返回NULL
;您需要修正这些值(使它们有效)。另一个不使用varchar
存储日期的好理由。
答案 1 :(得分:1)
也许有帮助
$(document).on("change", ".qty1", function() {
var arr = [];
var sum = 0;
$(".qty1").each(function(){
arr.push($(this).val());
sum += +$(this).val();
});
$(".total").val(sum);
$("#min").val(Math.min.apply(Math, arr));
$("#max").val(Math.max.apply(Math, arr));
});
答案 2 :(得分:0)
为此您总是可以使用substring
。示例如下所示。
DECLARE @samples TABLE
(
Dates NVARCHAR(50)
)
INSERT INTO @samples VALUES
('10/11/2018'),
('12/11/2018'),
('15/11/2018'),
('17/11/2018'),
('19/11/2018'),
('20/11/2018')
SELECT
SUBSTRING(Dates, 7,4) +
SUBSTRING(Dates, 4,2) +
SUBSTRING(Dates, 1,2) as [NewDate]
FROM @samples
输出将是具有所需格式的字符串列表。这不会为您验证,但您始终可以尝试使用CAST
将其转换为日期,如果日期正确,则应将yyyyMMdd
正确地转换为日期。
答案 3 :(得分:0)
如果您使用的是SQL Server 2016 或更高版本,则可以使用PARSE
和FORMAT
很容易地做到这一点:
SELECT
FORMAT(PARSE(wfm.Date AS DATE USING 'de-DE'), 'yyyyMMdd')
FROM
dbo.WhateverYourTableNameIS
dd/mm/yyyy
格式是使用的格式,例如在德国,这就是为什么我使用de-DE
文化将字符串转换为DATE
的原因。然后,您可以使用C#/。NET中常用的格式化字符串对其进行格式化。
答案 4 :(得分:0)
select convert(varchar, convert(datetime, wfm.date, 103), 112)