[英]Converting dd/MM/yyyy input to yyyy-MM-dd in date format not varchar/datetime
搜索了一整天后,我無法找到解決方案,面臨多個轉換錯誤。 主要目標是將dd/MM/yyyy
轉換為yyyy-MM-dd
“日期”格式以適應 SQL Server。
我有一個 SQL Server 2012 數據庫,其數據類型為date
作為表中的一列。
我在我的項目網站上使用帶有 jquery-1.4.1-vsdoc.js 的 jQuery datepicker 輸出dd/MM/yyyy
,它是使用獲得的
Dim dDate As DateTime = DateTime.Parse(Request.Form(txtStart.UniqueID))
然后我嘗試使用獲得的日期執行插入 SQL,但數據庫日期格式為yyyy-MM-dd
。
試過這個,但它不起作用:
SELECT CONVERT(date, CONVERT(DATETIME, '14/10/2011', 0), 120)
試過了,它可以工作,但它是varchar
數據類型,這不是我需要的
SELECT REPLACE(CONVERT(VARCHAR(10), '15/4/2014', 111), '/', '-') AS [YYYY-MM-DD]
我真的需要在我的網站 VB/C# 代碼或 SQL 語句上的代碼來實現這一點,請幫助
我使用 jQuery 的腳本已經用代碼編寫了我的 sql 當前設置的格式,但是在運行時它不適用
<script type="text/javascript">
$(document).ready(function () {
$("#<%=txtStart.ClientID %>").dynDateTime({
showsTime: false,
ifFormat: "%Y-%m-%d ",
daFormat: "%l;%M %p, %e %m, %Y",
align: "BR",
electric: false,
singleClick: false,
displayArea: ".siblings('.dtcDisplayArea')",
button: ".next()"
});
});
</script>
主要目標是將 dd/MM/yyyy 轉換為 yyyy-MM-dd“日期”格式以適應 SQL
別! 您應該盡可能避免字符串轉換。 盡可能多地將數據保持在其自然表示中。
您可能需要將日期從dd/MM/yyyy
解析為DateTime
以開始(盡管如果您甚至可以避免這種情況,請這樣做 - 我們不知道您的數據來自哪里),但是您應該將其保留為一個DateTime
。 請改用參數化 SQL,將參數值作為DateTime
傳遞給數據庫。 當然,您還應該確保數據庫中的字段使用適當的類型開頭(而不是varchar
)。 確保您的架構與您的數據匹配對於運行一個健全的系統至關重要。
解析部分應該比較簡單。 例如:
DateTime date = DateTime.ParseExact(text, "dd/MM/yyyy",
CultureInfo.InvariantCulture);
您可能希望改用用戶的文化(取決於數據的來源),並且您可能希望改用DateTime.TryParseExact
(如果這是用戶輸入的數據而不是機器對機器通信的數據)。
您必須記住DateTime
沒有格式。如果您想將某些日期字符串轉換為 DateTime,並且如果您預先知道日期格式,則可以使用DateTime.ParseExact()
嘗試這個:
string strDate = "21/04/2014";
DateTime dt = DateTime.ParseExact(strDate,"dd/MM/yyyy",
CultureInfo.InvariantCulture);
現在您可以將 DateTime 變量dt
存儲到數據庫中,但如果您想以某種格式顯示 DateTime,例如:yyyy-MM-dd,您需要調用ToString()
如下
String datetime = dt.ToString("yyyy-MM-dd");
使用dateFormat
選項
$(function(){
$("#to").datepicker({ dateFormat: 'yy-mm-dd' });
$("#from").datepicker({ dateFormat: 'yy-mm-dd' }).bind("change",function(){
var minValue = $(this).val();
minValue = $.datepicker.parseDate("yy-mm-dd", minValue);
minValue.setDate(minValue.getDate()+1);
$("#to").datepicker( "option", "minDate", minValue );
})
});
演示在這里
我們可以在使用 InvariantCulture 的同時嘗試 ParseExact 方法。 這提供了有關特定文化的信息。 該信息包括文化名稱、書寫系統(在您的情況下為 yyyy-MM-dd)等。
String MyDateString;
DateTime MyDateTime;
MyDateString = txtDateOfIncidence.Text.Trim()+ " " + txtTiming.Text.Trim();
MyDateTime = DateTime.ParseExact(MyDateString, "yyyy/MM/dd" + " hh:mm tt", System.Globalization.CultureInfo.InvariantCulture);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.