簡體   English   中英

將 dd/MM/yyyy 輸入轉換為日期格式的 yyyy-MM-dd 而不是 varchar/datetime

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM